我想克隆一個<select>
標籤及其數據屬性,但沒有其事件。如何使用JQuery克隆沒有事件的數據的元素
繼JQuery Official .clone() api,我明白我可以通過調用 $('#grolsh').clone()
沒有數據和事件克隆,或執行
$('#grolsh').clone(true)
將複製數據和事件。
我想保留數據但清除與原始項目關聯的事件。
我想克隆一個<select>
標籤及其數據屬性,但沒有其事件。如何使用JQuery克隆沒有事件的數據的元素
繼JQuery Official .clone() api,我明白我可以通過調用 $('#grolsh').clone()
沒有數據和事件克隆,或執行
$('#grolsh').clone(true)
將複製數據和事件。
我想保留數據但清除與原始項目關聯的事件。
一個更好的解決方案。從1.7版本,off()
是解除綁定的首選方法:
$('#grolsh').clone(true).off();
通過添加.off():
$('#grolsh').clone(true)
.attr({'id': 'newGrolsh'})
.off()
.appendTo('#target');
更新時間: 阿德里安建議.off將超過.unbind
只需使用
$('#grolsh').clone();
// 複製元素結構
$('#grolsh').clone(true)
// 複製與結構沿兩個數據和事件
$('#grolsh').clone(true).off()
// 複製兩個數據和事件並刪除處理程序
與.on()
綁定並使用.off()
移除的事件;
與.bind()
綁定並使用.unbind()
刪除的事件;
第一種情況是不正確的,數據不復制與克隆()並沒有參數http://jsfiddle.net/ALxz4/ – charlietfl
文檔狀態「從jQuery 1.4開始,所有元素數據(由.data()方法附加)也被複制到新副本中。」但從我的測試,正常克隆()沒有複製數據 –
感謝您指出它..修正措辭:) –
由於從jQuery的版本1.5的,你可以通過第二個參數(請參見:.clone([withDataAndEvents ] [, deepWithDataAndEvents ]))不復制事件處理程序:
$('#grolsh').clone(true,false);
不,這只是「一個布爾值,指示是否應該複製克隆元素的所有子元素的事件處理程序和數據。」 - 如果你的'#grolsh'沒有任何事件,就好像數據一樣。但它不是那樣的。 –
如果你真的只是想複製由.data()
方法不要附加數據「T濫用事件(未)結合和只是做:
var $original = $(".originalSelector");
var $clone = $original.clone().data($original.data());
因爲當你經過一個目的是.data()
方法,它與它擴展了當前的數據。
!重要提示!
如果您打算使用存儲DOM引用並使用它的東西,則不能這樣做。 jQuery UI的可拖動等等
=>只能用在 「純」 數據/基本類型
那麼究竟是什麼.off()和.unbind()有什麼區別? –
這裏閱讀http://stackoverflow.com/questions/9113783/whats-the-difference-between-jquery-bind-and-jquery-on –