javascript - Jquery插入dom后,插入部分无法调用js
PHP中文网
PHP中文网 2017-04-10 12:45:01
0
3
738

例如:
html:

<p class="a"><p>
<p class="b"><p>

在,js文件里有:

$(function(){
  $('.a').click(function(){
    alert('ok');
  })
  $('.b').click(function(){
    $("<p class='a'></p>").insertAfter($(this));
  })
})

那么新的dom结构就是

<p class="a"><p>
<p class="b"><p>
<p class="a"><p>

而后面那个a点击的时候就不会触发$('.a').click事件

问:怎么让后面加载的'.a'能够触发那个click事件

PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
小葫芦

你应该使用 on 事件进行绑定。http://api.jquery.com/on/

$(function(){
  $("body").on("click", '.a', function(){
    alert('ok');
  });
  $('.b').click(function(){
    $("<p class='a'></p>").insertAfter($(this));
  });
})
小葫芦

因为你创建的新结构没有绑定事件,如果希望绑定的结构也有事件,你可以考虑把事件绑定到body,然后通过判断点击事件的节点是否有 calss=a,来加载相应的事件;

  $('body').click(function(e){
    var t = $(e.target);
    if(t.hasClass('a')){......}
  })
巴扎黑

在 jQuery 1.9 中,live 已经被移除,请使用 on 来替代之

其实用live 就搞定了,live 利用事件冒泡到父节点,这样,即使新加入的元素也有事件响应,事件冒泡,好好研究一下吧 :http://api.jquery.com/live/

$('.a').live('click',function(){})
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板