Javascript – Problem mit der wiederholten Ausführung des JQ-Click-Ereignisses
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-07-05 10:38:45
0
9
1032

Bitte helfen Sie, die von jq dynamisch generierten Elemente müssen mit Klickereignissen verknüpft werden, damit sie wirksam werden, und die Funktion, die ausgeführt wird, verfügt auch über Klickereignisse, und dann wird die Funktion zweimal ausgeführt. Wie kann diese Situation gelöst werden?

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

Antworte allen(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 先解绑 在绑定

滿天的星座
$('document').unbind('click').click(function() {
            //dosomething
            })
过去多啦不再A梦
function removeMaopao(ev){
        var eEvent = ev || event;
        eEvent.stopPropagation() && eEvent.stopPropagation;
        return false;
    }
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()掉

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage