javascript - jq click事件重複執行的問題
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-07-05 10:38:45
0
9
1028

求助,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()掉

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板