javascript - jq click事件重復(fù)執(zhí)行的問題
問題描述
求助,jq動態(tài)生成的元素需要用on來綁定點(diǎn)擊事件才生效,而執(zhí)行on的函數(shù)里面也有點(diǎn)擊事件,然后函數(shù)就被執(zhí)行了兩次,這樣的情況該怎么解決?
問題解答
回答1:用event對象找到你真正想點(diǎn)擊的目標(biāo)
回答2:其實(shí),無非就是事件綁定了2次或者事件冒泡引起的;1,解除事件,再綁定
$(ele).unbind(’click’).click(function() {// to do })
2,取消冒泡
$(ele).click(function(e){ e.stopPropagation();});回答3:
先去除監(jiān)聽,后監(jiān)聽.off(handler).on(handler)
回答4:這是冒泡? e.stopPropagation()
回答5:off 先解綁 在綁定
回答6:$(’document’).unbind(’click’).click(function() { //dosomething })回答7:
function removeMaopao(ev){var eEvent = ev || event;eEvent.stopPropagation() && eEvent.stopPropagation;return false; }回答8:
樓上的說的比較清楚了。1.找到問題 1.1 是綁定了兩次,因?yàn)閯討B(tài)生成的元素綁定了一個事件,但是在這個事件中又去調(diào)用了之前綁定的事件
$(’document’).unbind(’click’).click(function() { //取消綁定的回調(diào)事件})
1.2 還是 事件的冒泡導(dǎo)致(如果不熟悉冒泡,請先看下相關(guān)資料)
$(’document’).click(function(e){ //取消事件冒泡 e.stopPropagation();});
2.動態(tài)生成的元素其實(shí)可以不一定需要使用動態(tài)的綁定事件
使用 delegate() 方法的事件處理程序適用于當(dāng)前或未來的元素(比如由腳本創(chuàng)建的新元素)。點(diǎn)擊這里查看詳細(xì)文檔:http://www.w3school.com.cn/jq...
$('p').delegate('button','click',function(){ $('p').slideToggle();});回答9:
記得on()之后off()掉
相關(guān)文章:
1. 數(shù)組按鍵值封裝!2. java - 阿里的開發(fā)手冊中為什么禁用map來作為查詢的接受類?3. docker不顯示端口映射呢?4. 主題切換問題,用過別人的webapp在后臺切換模板主題后手機(jī)端打開網(wǎng)頁就是切換到的主題了5. javascript - 為什么創(chuàng)建多行多列的表格最后只有一行內(nèi)有表格6. javascript - 使用vue官方腳手架進(jìn)行單元測試,如何覆蓋到watch里的變量?7. clone - git sourceTree克隆倉庫時,都不停彈出Password Required彈窗,即時輸入正確的git賬號密碼還是彈出8. html5 - 使用echarts中的圖表 一個頁面導(dǎo)入了好幾個js圖表 實(shí)現(xiàn)echarts圖表隨著瀏覽器窗口變化而變化時出現(xiàn)了問題9. 如何用Java向kafka發(fā)送json數(shù)據(jù)10. javascript - webpack中alias配置中的“@”是什么意思?
