美文网首页
js动态append或者html()添加的节点点击事件无效

js动态append或者html()添加的节点点击事件无效

作者: ForeverYoung_06 | 来源:发表于2019-12-03 09:58 被阅读0次

    问题:

    jQuery通过for循环添加的节点,再对各个节点添加点击事件无效,如下代码:

    //插入节点
     for (var i = 0; i < strs.length; i++) {
                    s += "<div class='div'>" + strs[i] + "</div>";
      }
      $(".his_content").html(s);
      //$(".his_content").append(s);
    //点击事件
    $('.his_content .div').click(function(){
        console.log('ok')
    })
    

    原因:

    这里的点击事件是无效的,百度后发现,是因为append中的节点是在整个文档加载后才添加的,页面并不会为未来的元素初始化添加点击事件,所以使用这种方式动态添加的节点中的点击事件没有生效。

    解决方案:

    事件委托。给所有的类名为.div的元素添加点击事件,将指定事件绑定在document上,只要而新产生的元素符合指定的元素,就会绑定此事件 ,而且这种方法当页面需要为多个节点初始化事件的时候,就不需要一个个加onclick事件。

      $(document).on("click", ".div", function () {
            console.log("ok")
        })
    

    不完美女孩

    相关文章

      网友评论

          本文标题:js动态append或者html()添加的节点点击事件无效

          本文链接:https://www.haomeiwen.com/subject/jyzqgctx.html