喵喵時光機
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。
添加回答
舉報
0/150
提交
取消