20

<select>データ属性はあるがイベントがないタグのクローンを作成したいと考えています。

JQuery Official .clone() apiに従って、 を呼び出してデータやイベントなしで複製できることを理解してい $('#grolsh').clone()ます。

$('#grolsh').clone(true)これにより、データとイベントがコピーされます。

データを保持したいが、元のアイテムに関連付けられているイベントをクリアしたい。

4

5 に答える 5

20

バージョン 1.7 以降でoff()は、バインドを解除するための推奨される方法は次のとおりです。

$('#grolsh').clone(true).off();
于 2012-10-30T15:19:36.063 に答える
11

使うだけ

$('#grolsh').clone();//要素構造をコピーします

$('#grolsh').clone(true)//データとイベントの両方を構造体とともにコピーします

$('#grolsh').clone(true).off()//データとイベントの両方をコピーし、ハンドラを削除します

イベントは;.on()を使用してバインドおよび削除されます。.off()

イベントは;.bind()を使用してバインドおよび削除されます。.unbind()

于 2012-10-30T15:23:59.117 に答える
2

.off()を追加することにより:

$('#grolsh').clone(true)
    .attr({'id': 'newGrolsh'})
    .off()
    .appendTo('#target');

更新: Adrian が示唆したように、 .offは.unbindよりも優れたソリューションです。

于 2012-10-30T15:18:49.570 に答える
1

jQuery バージョン 1.5 以降では、2 番目のパラメーター (参照: .clone( [withDataAndEvents ] [, deepWithDataAndEvents ] ) ) を渡して、イベント ハンドラーをコピーできません。

$('#grolsh').clone(true,false);
于 2016-03-02T05:06:09.620 に答える
0

.data()メソッドによって添付されたデータを本当にコピーしたい場合は、イベント (アン) バインディングを悪用せず、次のようにします。

var $original = $(".originalSelector");
var $clone = $original.clone().data( $original.data() );

オブジェクトを.data()メソッドに渡すと、現在のデータが拡張されるためです。

!重要な注意点!
DOM 参照を保存して使用するものを使用する場合、これを行うことはできません。たとえば、ドラッグ可能な jQuery UIなど...
=>「純粋な」データ/基本型でのみ使用してください。

于 2016-04-14T22:00:39.723 に答える