Jquery.Hover不适用于动态元素

时间:2011-11-01 20:20:48

标签: jquery html dynamic hover

这是我的代码

$(".inboxfeedlist li").hover(function(e){alert('');}

这不适用于动态创建的元素,即使我已经使用

$(".inboxfeedlist li").bind('hover',function(){})

也无效,代码有什么问题。

8 个答案:

答案 0 :(得分:32)

live在jQuery 1.9上被弃用了。我们可以将on用于mouseentermouseleave事件:

$(document).on("mouseenter", ".save-btn", function(e) {
    $(this).css("background-image","url('ie/imgs/btn/hover-btn.png')");
    $(this).find("a").css("background-image","url('ie/imgs/btn/hover-btn-left.png')");
});

$(document).on("mouseleave", ".save-btn", function(e) {
    $(this).css("background-image","url('ie/imgs/btn/btn.png')");
    $(this).find("a").css("background-image","url('ie/imgs/btn/btn-left.png')");
});

出于某种原因,我无法将hoveron一起使用。它根本不起作用。但是,根据我的阅读,悬停只是一个来自mouseenter和mouseleave的改编,所以很好。 (https://stackoverflow.com/a/4463384/1031340

如果您不需要支持IE6,我建议您在CSS上使用:hover(如果仅在CSS中进行更改,以上示例如何)。

答案 1 :(得分:3)

尝试live

$(".inboxfeedlist li").live('hover',function(){});

答案 2 :(得分:3)

使用实时方法:

$(".inboxfeedlist li").live('hover', function(e){alert('');});

旁注hover确实需要两个回调函数,您的意思是mouseover

答案 3 :(得分:1)

使用delegatelive绑定事件。这将确保动态添加的任何内容也将绑定到事件处理程序。

答案 4 :(得分:1)

听起来您需要livedelegate。代表是首选

$(document.body).delegate(".inboxfeedlist li", "hover", function(){
        alert('');
});

答案 5 :(得分:0)

$('.inboxfeedlist li').live('hover', function(e) { alert(''); });

jQuery live

jQuery delegate

答案 6 :(得分:0)

您可以使用以下内容:

$(document).on('mouseover','div.cover-wrapper',function(){
    $(this).css({'border':'1px solid #000'});
});


$(document).on('mouseout','div.cover-wrapper',function(){
    $(this).css({'border':'none'});
});

答案 7 :(得分:0)

以下是这些功能的用法和详细信息

http://api.jquery.com/live/

$(选择器).live(事件,数据,处理程序); // jQuery 1.3 +

$(document).delegate(选择器,事件,数据,处理程序); // jQuery 1.4.3 +

$(document).on(事件,选择器,数据,处理程序); // jQuery 1.7 +