求助,jq動態產生的元素需要用on來綁定點擊事件才生效,而執行on的函數裡面也有點擊事件,然後函數就被執行了兩次,這樣的情況該怎麼解決?
用event物件找到你真正想點擊的目標
其實,無非就是事件綁定了2次或事件冒泡引起的;1,解除事件,再綁定
$(ele).unbind('click').click(function() { // to do })
2,取消冒泡
$(ele).click(function(e){ e.stopPropagation(); });
先去除監聽,後監聽.off(handler).on(handler)
這是冒泡? e.stopPropagation()
off 先解綁 在綁定
雷雷
樓上的說的比較清楚了。 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(); });
記得on()之後off()掉
用event物件找到你真正想點擊的目標
其實,無非就是事件綁定了2次或事件冒泡引起的;
1,解除事件,再綁定
2,取消冒泡
先去除監聽,後監聽
.off(handler).on(handler)
這是冒泡? e.stopPropagation()
off 先解綁 在綁定
雷雷
雷雷
樓上的說的比較清楚了。
1.找到問題
1.1 是綁定了兩次,因為動態產生的元素綁定了一個事件,但是在這個事件中又去調用了之前綁定的事件
1.2 還是 事件的冒泡導致(如果不熟悉冒泡,請先看下相關資料)
2.動態產生的元素其實可以不一定需要使用動態的綁定事件
使用 delegate() 方法的事件處理程序適用於目前或未來的元素(例如由腳本建立的新元素)。
點這裡查看詳細文件:http://www.w3school.com.cn/jq...
記得on()之後off()掉