javascript - jq click事件重复执行的问题
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-07-05 10:38:45
0
9
948

求助,jq动态生成的元素需要用on来绑定点击事件才生效,而执行on的函数里面也有点击事件,然后函数就被执行了两次,这样的情况该怎么解决?

曾经蜡笔没有小新
曾经蜡笔没有小新

全部回复 (9)
漂亮男人

用event对象找到你真正想点击的目标

    曾经蜡笔没有小新

    其实,无非就是事件绑定了2次或者事件冒泡引起的;
    1,解除事件,再绑定

    $(ele).unbind('click').click(function() { // to do })

    2,取消冒泡

    $(ele).click(function(e){ e.stopPropagation(); });
      某草草

      先去除监听,后监听
      .off(handler).on(handler)

        Peter_Zhu

        这是冒泡? e.stopPropagation()

          typecho

          off 先解绑 在绑定

            滿天的星座

            雷雷

              过去多啦不再A梦

              雷雷

                Peter_Zhu

                楼上的说的比较清楚了。
                1.找到问题
                1.1 是绑定了两次,因为动态生成的元素绑定了一个事件,但是在这个事件中又去调用了之前绑定的事件

                $('document').unbind('click').click(function() { //取消绑定的回调事件 })

                1.2 还是 事件的冒泡导致(如果不熟悉冒泡,请先看下相关资料)

                $('document').click(function(e){ //取消事件冒泡 e.stopPropagation(); });

                2.动态生成的元素其实可以不一定需要使用动态的绑定事件

                使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。
                点击这里查看详细文档:http://www.w3school.com.cn/jq...

                $("p").delegate("button","click",function(){ $("p").slideToggle(); });
                  phpcn_u1582

                  记得on()之后off()掉

                    最新下载
                    更多>
                    网站特效
                    网站源码
                    网站素材
                    前端模板
                    关于我们 免责声明 Sitemap
                    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!