jquery悬停不适用于我的列表项

发布于 2024-10-19 15:51:40 字数 718 浏览 9 评论 0原文

我遇到了一个奇怪的问题,我向使用 ajax 动态生成的列表项添加了悬停功能,但没有任何反应。代码执行时没有任何错误,但没有任何效果。即使 mouseenter 和 mouseout 也没有显示警报。警报偶尔会弹出一次,但不是每次都会弹出。我正在使用以下代码。

$('.category_list li').live("mouseenter", function() { 
alert('I m here');
  $(this).find('.category_list').css('text-decoration','underline');
}).live("mouseleave", function() {
alert('I m gone');
  $(this).find('.category_list').css('text-decoration','none');
}); 

我的 html 代码是

htmlData.push('<ul class="category_list">');
htmlData.push('<li><a href="javascript:void(0);" onclick="callGetApplicationDetails('+iIndex+',0);" >'+categoryName+'</a></li>');

请帮助我,因为我陷入了困境。

谢谢 赫米什

I am going thru a strange problem,I added hover function to my list items which are generated dynamically using ajax, but nothing is happening.The code is executing without any errors but with no effect.Even the alert is not displaying for mouseenter and mouseout.The alert pops up once in a while but not everytime.I am using the following code.

$('.category_list li').live("mouseenter", function() { 
alert('I m here');
  $(this).find('.category_list').css('text-decoration','underline');
}).live("mouseleave", function() {
alert('I m gone');
  $(this).find('.category_list').css('text-decoration','none');
}); 

My html code is

htmlData.push('<ul class="category_list">');
htmlData.push('<li><a href="javascript:void(0);" onclick="callGetApplicationDetails('+iIndex+',0);" >'+categoryName+'</a></li>');

Please help me since i am stuck very badly.

thanks
Hemish

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

む无字情书 2024-10-26 15:51:40

尝试使用 mouseovermouseout 事件。我相信您的过滤选择器正在寻找

  • 元素父元素?
  • $('.category_list li').live('mouseover mouseout', function(event) {
        if (event.type == 'mouseover') {
            alert('I m here');
            $(this).parent().css('text-decoration','underline');
        } else {
            alert('I m gone');
            $(this).parent().css('text-decoration','none');
        }
    });
    

    你可以用一个新的 css 类稍微清理一下 jQuery

    .category_list.over
    {
        text-decoration: underline;
    }
    

    并使用 toggleClass()

    $('.category_list li').live('mouseover mouseout', function(event) {
        if (event.type == 'mouseover') { alert('I m here'); } 
        else { alert('I m gone'); }
    
        $(this).parent().toggleClass('over');
    });
    

    Try using the mouseover and mouseout events. I believe your filtering selector was looking for the <li> elements parent?

    $('.category_list li').live('mouseover mouseout', function(event) {
        if (event.type == 'mouseover') {
            alert('I m here');
            $(this).parent().css('text-decoration','underline');
        } else {
            alert('I m gone');
            $(this).parent().css('text-decoration','none');
        }
    });
    

    and you could probably clean up the jQuery a little with a new css class

    .category_list.over
    {
        text-decoration: underline;
    }
    

    and use toggleClass()

    $('.category_list li').live('mouseover mouseout', function(event) {
        if (event.type == 'mouseover') { alert('I m here'); } 
        else { alert('I m gone'); }
    
        $(this).parent().toggleClass('over');
    });
    
    飘然心甜 2024-10-26 15:51:40

    如果您不需要通过此功能支持 IE6,请改用 CSS:

    示例: http: //jsfiddle.net/QLsQp/

    .category_list li a {
        text-decoration:none;
    }
    
    .category_list li:hover a {
        text-decoration:underline;
    }
    

    li 被选中时,它使用 :hover 伪选择器影响嵌套的 a 元素盘旋。


    javascript 的问题在于:

    $(this).find('.category_list')
    

    ...找不到任何内容,因为 .category_list

  • 祖先 > 元素,而不是后代
  • 你需要这个:

    $(this).find('a')
    

    If you don't need to support IE6 with this feature, use CSS instead:

    Example: http://jsfiddle.net/QLsQp/

    .category_list li a {
        text-decoration:none;
    }
    
    .category_list li:hover a {
        text-decoration:underline;
    }
    

    This uses the :hover pseudo selector to affect the nested a element when a li is hovered.


    The trouble with your javascript is that this:

    $(this).find('.category_list')
    

    ...won't find anything, because .category_list is an ancestor of the <li> elements, not a descendant.

    You would need this instead:

    $(this).find('a')
    
    胡渣熟男 2024-10-26 15:51:40

    最后!我使用了livequery,它成功了!

    $('.category_list li').livequery("mouseenter", function() {
        $(this).css({'background-color' : '#A9A8A8'})
    }).livequery("mouseleave", function() {
        $(this).css({'background-color' : '#F4F4F4'})
    });
    

    @Patrick:感谢您的帮助。

    希望它也能帮助其他人。

    Finally! I used livequery and it worked!

    $('.category_list li').livequery("mouseenter", function() {
        $(this).css({'background-color' : '#A9A8A8'})
    }).livequery("mouseleave", function() {
        $(this).css({'background-color' : '#F4F4F4'})
    });
    

    @Patrick:Thanks for the help.

    Hope it will help others also.

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文