jQuery Listen プラグイン イベントを複製するにはどうすればよいですか?
-
21-08-2019 - |
質問
いくつか持っています <tr>
私のページ上の要素 click()
それぞれの中にある画像に添付されたイベント。このコードを使用します
$(this).clone(true).appendTo("table#foo");
次のことを行うには:
- それらをコピーします
<tr>
別のテーブルに - 画像のクリック イベントを内部に保存します。
<tr>
s (理由は、true
口論)
それはすべてうまくいきます。今、私はを追加しました jQueryリッスン そんな方へのイベント <tr>
ユーザーが正確に狙う必要がないようにします。どこでもクリックできます <tr>
画像にクリックを渡すことができます。
次のようにコード化されています。
$('tr.record').listen('click','td',function(){
$(this).parent().find("img.clickable").click();
});
listen() イベントは元の項目では正常に動作しますが、 クローン化されたアイテムでは、listen() イベントは失敗します。 画像のクリックイベントは引き続き正常に動作します。
Firebug が私に教えてくれたのは次のとおりです。
m(this, e.type) is undefined
...そして、これは jquery.listen-1.0.3-min.js の 9 行目を参照しています。
クローン要素で listen() イベントを機能させるにはどうすればよいですか?
アップデート
デフォルトでは、jQuery はクローン要素のイベントをコピーしませんが、 このプラグイン そうするように作られている。
一方、listen() プラグインの作成者は別の戦略を提案しました - 以下の私の回答を参照してください。
解決
アリエルFlesler、聞く()プラグインの作成者は、電子メールを介して私にこの助言を与えます:
「私は、これは別の方法で解決することができると思います。という考えは聞く(と イベント委任)は、実際のイベントのすべてのコピーを回避することです 新しい要素。」の
"あなたは、単に行うことができます:" の
$('table#foo').listen('click','td',function(){
$(this).parent().find("img.clickable").click();
});
の "あるいは" の
$.listen('click','td',function(){
$(this).parent().find("img.clickable").click();
});
"最初の例では、リスナーとして、テーブルを使用します。2 1つでは、
<html>
タグが使用されています。だから、どんなに新しいTD / TR /テーブルを追加する場合。それは
まだ働いています。」の