2011-06-01 183 views
3

我需要添加一个点击事件到我加载DOM后动态创建的列表项。jquery将点击事件添加到动态创建的元素

我正在使用;

$("#ListDiv li").live("click",function(event){ 
    do something...... 
}); 

但是,当元素加载在页面上,我点击它,我什么都没有。

这适用于Firefox而不适用于IE8。我也试过jquery livequery和deleagte,但都没有工作。我试着调试与IE8的开发工具,但该方法从未达到

回答

10

使用.delegate.live,并确保你绑定一旦DOM is ready

$(document).ready(function() { 
    $("#ListDiv").delegate("li", "click", function (event) { 
     // do something 
    }); 
}); 

编辑:

上述解决方案,同时还完美有效,现在是遗留/弃用。 jQuery的自引入.on() method

在jQuery 1.7中,。对()方法提供用于附接的事件处理程序所需 所有功能。

实现相当类似.delegate解决方案张贴以上,但是要注意参数的顺序发生了变化:

$(document).ready(function() { 
    $("#ListDiv").on("click", "li", function (event) { 
     // do something 
    }); 
}); 
+1

这些代码现在都[不赞成](http://api.jquery.com/on/) – cliveholloway 2012-06-21 02:53:11

+0

@cliveholloway - 谢谢你指出。我刚刚更新了答案:)再次感谢! – karim79 2012-06-21 12:55:39

2

推动内部的document.ready

$(document).ready(function() { 
     $("#ListDiv li").live("click",function(event){ 
     do something...... 
     }); 
    }); 
相关问题