1

みんな私は少し問題があり、私にとっては巨大なので、それが私があなたに尋ねなければならない理由です...とにかく問題は、あるテーブルからテーブル行をコピーして別のテーブルに追加したいのですが、別のテーブルに追加する前にテーブル私はそのすべてのイベントを削除する必要があります、私はグーグル割り当てを使用しましたが、それは私を助けていません

var $UserRow = $(Final).closest('tr');

$('td', $UserRow).each(function () {
    $(this).onclick = null;
});

$UserRow.clone().appendTo($('#UserTicket'));

これはこれまでのコードです。UserRowとその中のすべてのtdを取得して、すべてのイベントを削除する方法を教えてください。

4

4 に答える 4

2

最初にクローンを作成してから、コンテナに追加するだけです。.cloneデフォルトでは、イベントハンドラーをコピーしません。

var $UserRow = $(Final).closest('tr').clone();
$UserRow.appendTo('#UserTicket');

jQuery.clone()

.clone( [withDataAndEvents] [, deepWithDataAndEvents] )

withDataAndEventsイベントハンドラーとデータを要素と一緒にコピーする必要があるかどうかを示すブール値。デフォルト値はfalseです。jQuery 1.5.0では、デフォルト値が誤ってtrueでした。1.5.1以降ではfalseに戻されました。

于 2012-10-03T01:59:42.610 に答える
1

これらはjQueryのイベントシステムの一部ではないため、jQueryオブジェクトを作成する理由はありません。

ネイティブDOM要素をクリアする必要があります。

$('td', $UserRow).each(function () {
    this.onclick = null;
});

イベント属性を使用したため、ハンドラーが再作成されるかどうかはわかりません。そのため、それもクリアすることをお勧めします。

$('td', $UserRow).each(function () {
    this.onclick = null;
    this.removeAttribute("onclick");
});
于 2012-10-03T02:29:39.333 に答える
0

DOMとcloneNode;を使用してこれを試してください。イベントハンドラーがコピーされないことに気付くでしょう。例えば:

// get the first table row in the document.
var firstRow = document.getElementsByTagName('tr')[0];

// give it an event handler to test.
firstRow.onclick = function() { alert('It works'); };

// clone the row and append it to the end of the row set.
firstRow.parentNode.appendChild(firstRow.cloneNode(true));  

ここでテストできます; 最初の行のクローンを作成してテーブルの最後に追加し、行をクリックできなくなったことがわかります。

于 2012-10-03T03:03:10.477 に答える
0

jQueryを使用し.offます。

$(element).off('click');

上記を使用して、すべてのクリックハンドラーを削除します。特定のクリックハンドラーのみを削除するには、

$(element).off('click', functionNotToBeExecuted);
于 2012-10-03T01:58:37.927 に答える