jQuery click()事件没有触发加载AJAX的HTML元素

Ada*_*iba 33 javascript ajax jquery

这个主题很好地描述了我的问题,我假设它不会这样工作,有没有办法使它工作?(解决方法)?

这是通过AJAX加载的代码:

<div>
<div id="s0frame" class="sframe"></div>
<div id="s1frame" class="sframe"></div>
<div id="s2frame" class="sframe"></div>
<div id="s3frame" class="sframe"></div>
<div id="s4frame" class="sframe"></div>
<div id="s5frame" class="sframe"></div>
<div id="chatframe" class="chat alpha60"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的点击事件:

$('.sframe').bind('click', function() { 
    var seat_number = this.id.match(/\d/g);
    alert(seat_number); 
});
Run Code Online (Sandbox Code Playgroud)

Aje*_*nha 80

做这个.

 $(document).on("click",".sframe",function(e){
 var seat_number = this.id.match(/\d/g);
 alert(seat_number); 
 });
Run Code Online (Sandbox Code Playgroud)

要么

 $(document).delegate(".sframe","click",function(e){
 var seat_number = this.id.match(/\d/g);
 alert(seat_number); 

 });
Run Code Online (Sandbox Code Playgroud)

编辑:

从jQuery 1.7开始,不推荐使用.live()方法.使用.on()附加事件处理程序.旧版jQuery的用户应该使用.delegate().

  • `.live()`从jQuery 1.7开始被弃用,所以对于更新的版本,请使用它的替换`.on()` (5认同)
  • 由于使用`live()`而被低估了.它已被弃用,不再使用它(即使在`on()`之前,建议使用`delegate()`而不是`live()`).如果答案得到解决,我将删除我的downvote. (2认同)

Raf*_*fay 16

您必须将事件处理程序重新附加到DOM中的动态添加元素..live方法被广泛使用但现在已被弃用.在jQuery 1.7+版本中,您可以使用.on或者使用.delegate

$(document).on("click",".sframe",function(e){

});
Run Code Online (Sandbox Code Playgroud)

使用代表

$(document).delegate(".sframe","click",function(e){

});
Run Code Online (Sandbox Code Playgroud)

  • +1用于提供问题的正确答案 (3认同)