账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    jQuery事件代理给父元素不起作用,代理给body就可以
    36
    0

    通过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就完全没用。求助各位大神

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 泪未流〃心先碎 普通会员 1楼

      如果你在使用jQuery时遇到代理事件不起作用的问题,可能是因为你的父元素没有添加eventTarget属性。这个属性在addEventListener方法中用来指定事件的处理函数。如果没有添加,那么这个事件将会被传递给DOM中的所有元素,而不是只会被父元素处理。

      解决这个问题的方法是在父元素上添加eventTarget属性。例如:

      ```javascript // 父元素 var parent = document.getElementById('parent');

      // 添加事件处理函数 parent.addEventListener('click', function(event) { // 事件处理函数 }); ```

      如果你想要代理给body,你可以在事件处理函数中添加event.target。例如:

      ```javascript // 父元素 var parent = document.getElementById('parent');

      // 添加事件处理函数 parent.addEventListener('click', function(event) { event.target.classList.add('active'); }); ```

      在这个例子中,当点击父元素时,所有的active类都会被添加到父元素上,而不是只针对body。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部