假设我有一些这样的代码被调用$(document).ready()
$(".someClass").click(function(){
//do something
});
后来我有一些 jquery 来创建一个带有 class 的元素someClass
。无论如何要从上面自动附加点击还是我必须再次手动附加它?
假设我有一些这样的代码被调用$(document).ready()
$(".someClass").click(function(){
//do something
});
后来我有一些 jquery 来创建一个带有 class 的元素someClass
。无论如何要从上面自动附加点击还是我必须再次手动附加它?
是的。有可能的。
$("body").on("click", ".someClass", function() {
// ...
});
使用最新版本的 jquery 和on
$(document).on('click', '.someClass', function(e){
//do something
});
Live
已弃用,但无论如何您都可以使用它(不推荐)。
$('.someClass').live('click', function(e){
//do something
});
There is live
,它也监听新元素
$(".someClass").live('click', function(){
//do something
});
但是,从 jquery 1.7 开始,它已被弃用。建议on
改用。
但是为了使用on
,您需要一个容器来存放要绑定处理程序的元素。当然你可以使用body
ordocument
但最好使用更具体的元素
$(".someClassContainer").on('click', '.someClass' function(){
//do something
});
有两种简单的方法可以做到这一点,第一种是使用on()
:
$(".someClassParentElementPresentInTheDOMonDOMReady").on('click','.someClass',
function(){
//do something
});
另一种是在创建新元素时简单地分配点击处理程序;我不知道你是怎么做到的,但下面是一个例子:
$('#addElement').click(
function(){
var newElem = $('<div />',{'class' : 'someClass'}).click(function(){
// do something }).appendTo('.someClassParentElementPresentInTheDOMonDOMReady');
参考:
on()
.