0

div があります。div の新しいコピーをページのどこかに追加したいのですが、新しい ID と新しいイベント ハンドラーが必要です。新しい ID は、「元の ID + _cloned」の形式にすることができます。新しい ID を提供することはできますが、元の div にあったすべてのイベント ハンドラーを、新しい ID にマップされた新しい div にアタッチする必要があります。jQueryを使用してそれを行う方法はありますか?

4

4 に答える 4

2

関数の jQuery ドキュメントを.clone()見ると、要素自体のデータとイベント ハンドラーを含めるための 2 つのオプションのパラメーターと、クローン作成時の要素の子孫があることがわかります。

これにより、イベント ハンドラーの保持が処理されます (デリゲートされるのではなく、その要素に直接バインドされている限り)。その場合はid、結果の要素のプロパティを変更するだけで済みます。以下は、必要なことを行う必要があります。

$('#myid').clone(true).prop('id', function(i, oldId) {
    return oldId + '_cloned';
});
于 2012-09-06T14:17:14.103 に答える
1

.clone( [withDataAndEvents] [, deepWithDataAndEvents]イベントハンドラとデータをコピーするために使用できます。

ただし、IDによってバインドされた委任されたイベントが、複製された要素で引き続き機能するかどうかは疑問です。

例: http: //jsfiddle.net/Sfrm9/

$(document).on('click'. '#someId', function () { });#someId-クローンを作成して次のように変更した後は機能しません#someId_cloned

ここで述べたように、mcpDESIGNSclassは、委任されたハンドラーのidの代わりに使用するようにマップする必要があります。そうすれば、クローンは正常に機能するはずです。

元:

<div id="#someId" class="someClass" >Test</div>

JS:

$(document).on('click'. '.someClass', function () { });

それ以外の

$(document).on('click'. '#someId', function () { });

于 2012-09-06T14:19:04.447 に答える
1
.clone(true);

このようにして、イベント ハンドラーを要素と共にコピーする必要があります。

于 2012-09-06T14:17:06.163 に答える
0

div のクラスを使用してイベントをバインドできます。次に、そのイベントに応答する必要があるすべての div に同じクラスを残すことができます。

イベントが id セレクターを使用してバインドされている場合、id を変更する必要があるため、新しい div では機能しませんが、クラスでは機能するはずです。

于 2012-09-06T14:17:13.910 に答える