<select>
データ属性はあるがイベントがないタグのクローンを作成したいと考えています。
JQuery Official .clone() apiに従って、 を呼び出してデータやイベントなしで複製できることを理解してい
$('#grolsh').clone()
ます。
$('#grolsh').clone(true)
これにより、データとイベントがコピーされます。
データを保持したいが、元のアイテムに関連付けられているイベントをクリアしたい。
<select>
データ属性はあるがイベントがないタグのクローンを作成したいと考えています。
JQuery Official .clone() apiに従って、 を呼び出してデータやイベントなしで複製できることを理解してい
$('#grolsh').clone()
ます。
$('#grolsh').clone(true)
これにより、データとイベントがコピーされます。
データを保持したいが、元のアイテムに関連付けられているイベントをクリアしたい。
バージョン 1.7 以降でoff()
は、バインドを解除するための推奨される方法は次のとおりです。
$('#grolsh').clone(true).off();
使うだけ
$('#grolsh').clone();
//要素構造をコピーします
$('#grolsh').clone(true)
//データとイベントの両方を構造体とともにコピーします
$('#grolsh').clone(true).off()
//データとイベントの両方をコピーし、ハンドラを削除します
イベントは;.on()
を使用してバインドおよび削除されます。.off()
イベントは;.bind()
を使用してバインドおよび削除されます。.unbind()
.off()を追加することにより:
$('#grolsh').clone(true)
.attr({'id': 'newGrolsh'})
.off()
.appendTo('#target');
更新: Adrian が示唆したように、 .offは.unbindよりも優れたソリューションです。
jQuery バージョン 1.5 以降では、2 番目のパラメーター (参照: .clone( [withDataAndEvents ] [, deepWithDataAndEvents ] ) ) を渡して、イベント ハンドラーをコピーできません。
$('#grolsh').clone(true,false);
.data()
メソッドによって添付されたデータを本当にコピーしたい場合は、イベント (アン) バインディングを悪用せず、次のようにします。
var $original = $(".originalSelector");
var $clone = $original.clone().data( $original.data() );
オブジェクトを.data()
メソッドに渡すと、現在のデータが拡張されるためです。
!重要な注意点!
DOM 参照を保存して使用するものを使用する場合、これを行うことはできません。たとえば、ドラッグ可能な jQuery UIなど...
=>「純粋な」データ/基本型でのみ使用してください。