Jquery是否为将来的元素不起作用?

Jquery是否为将来的元素不起作用?,jquery,future,Jquery,Future,我有一个点击功能 $('.rx').children().on('click',function(){alert('got here');}); 我的div(页面上有50个div集) 我做错了 有什么突出的地方吗?on()不是live()的别名。它说“将这个未来事件绑定到我正在指定的元素上的这些子元素,我正在指定的元素现在已经存在” 但是如果它是整个否,则只会绑定到现有元素,除非使用 选项#1 绑定到回调中新添加元素的单击事件(在元素添加到DOM之后): 选项2 使用绑定到容器的委派事件: $

我有一个点击功能

$('.rx').children().on('click',function(){alert('got here');});
我的div(页面上有50个div集)

我做错了

有什么突出的地方吗?

on()不是live()的别名。它说“将这个未来事件绑定到我正在指定的元素上的这些子元素,我正在指定的元素现在已经存在”

但是如果它是整个
否,则只会绑定到现有元素,除非使用

选项#1

绑定到回调中新添加元素的
单击
事件(在元素添加到DOM之后):

选项2

使用绑定到容器的委派事件:

$(document).on('click', '.rx > *', function() { 
    alert('got here');
});

注意:您可能希望用与子元素匹配的实际元素类型或类替换选择器中的星号。尽可能避免在选择器中使用星号。上面的另一个改进是使用更接近
.rx
的父级,而不是直接绑定到
文档

,您需要使用委托事件。简而言之,您需要为jquery指定一个容器元素来“监视”DOM的更改,这意味着on()函数的语法略有不同:

$('body').children().on('click', '.rx',function(){alert('got here');});
这意味着它将观察身体(实际上应该使用更具体的元素),并找到任何具有“rx”类的元素。现在,当主体中有javascript动态插入的新元素时,它们也会收到警报


查看完整的详细信息。

$('.rx')。在('click','*',function(){alert('got here');})
如果
*
是将来要添加的选择器,请随意更改它。live不是live的别名。
.live
已被弃用,取而代之的是
.on
,因此它是替代品。区别在于语法。对不起,我吹毛求疵;)哇!谢谢大家的快速反应。每次我试图回答,都会有另一个答案!!!。最后我使用了
$('ol#posts')。在('click','.rx>*'上,函数(){alert('here');})
ol#posts是最近的包装元素(这是您使用最近的元素保存jquery搜索整个文档的原因吗?)。非常感谢。这将成为一个“直到黎明”的头条新闻,就像昨晚在地理定位上苦苦挣扎而没有使用苹果的移动网络应用一样。你在这里的讨论也帮我解决了这个问题。干杯
$('.rx').on('click', '*', function(){alert('got here');});
$(document).on('click', '.rx > *', function(){alert('got here');});
$.ajax({
    ...
}).done(function(){
    $('.rx').children().on('click', function() { 
        alert('got here');
    });
});
$(document).on('click', '.rx > *', function() { 
    alert('got here');
});
$('body').children().on('click', '.rx',function(){alert('got here');});