jQuery事件代理给父元素不起作用,代理给body就可以

通过ajax请求数据动态生成的结构,通过事件代理的方式添加点击事件
一般来说,代理给已经存在的父元素就可以,但是我每一次都只能代理到body上才会生效,父元素上没有效果,求解,很疑惑,找不到原因。
贴一段简单的实验代码

jQuery('body').on('click','ul li',function(){
    alert(1);
});
var html = '<li>111111111111</li>';
jQuery('ul').html(html);

body就可以生效

jQuery('ul').on('click','ul li',function(){
    alert(1);
});
var html = '<li>111111111111</li>';
jQuery('ul').html(html);

代理给ul就完全没用。求助各位大神

阅读 3.4k
3 个回答

第二个选择器里面不要写ul,只写li试试。

jQuery('ul').on('click','li',function(){
    alert(1);
});
var html = '<li>111111111111</li>';
jQuery('ul').html(html);

你可以把ul li 写成 ul>li

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题