亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jQuery clone()不克隆事件綁定,即使使用on()

jQuery clone()不克隆事件綁定,即使使用on()

喵喵時光機 2019-10-19 14:06:51
我創建了一系列用于移動Web應用程序的自定義jQuery事件。它們效果很好,并且已經過測試。但是,我遇到了一個小問題,難以理解。我正在.clone()DOM中使用一些元素,其中包含一個按鈕。該按鈕綁定了一些自定義事件(這些事件使用綁定.on()),但是。不幸的是,當我使用jQuery時.clone(),未保留綁定,我必須再次添加它們。之前有沒有人遇到過這種情況,有人知道有可能解決此問題嗎?我以為使用.on()應該保留現在或將來存在的元素的綁定?
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

我認為您應該使用.clone()方法的重載:


$element.clone(true, true);

clone([withDataAndEvents] [,deepWithDataAndEvents])


withDataAndEvents:一個布爾值,指示是否應將事件處理程序和數據與元素一起復制。默認值為false。


deepWithDataAndEvents:一個布爾值,指示是否應復制克隆元素的所有子級的事件處理程序和數據。默認情況下,它的值與第一個參數的值匹配(默認為false)。


注意,.on()實際上不會將事件綁定到目標,而是綁定到要委派的元素。因此,如果您有:


$('#container').on('click', '.button', ...);

這些事件實際上綁定到#container。當發生單擊.button元素時,它會冒泡直到該#container元素。觸發事件的元素將根據的選擇器參數進行評估.on(),如果匹配,則執行事件處理程序。這就是事件委托的工作方式。


如果克隆元素#container,則必須使用事件和數據進行深度克隆,.on()以保留要進行的綁定。


如果您.on()在的父項上使用,則沒有必要#container。


查看完整回答
反對 回復 2019-10-19
  • 2 回答
  • 0 關注
  • 1233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號