0

何よりもまず、次のコードを使用して揮発性要素にアタッチする必要があることを知っています

$("#volatiles_container").on("click", ".volatile", function() { ... });

そんなこと知ってる。

しかし、それは機能しません。このデモを参照してください。既存のものは機能しますが、作成されたものは機能しません。なぜですか?

http://jsfiddle.net/LUsMb/607/

test1クラスとそのイベント関数を参照してください。

(これは私のページではありません。Google で jsfiddle select2 の例を見つけ、問題を追加しました)

少し複雑な例で申し訳ありません。 を探してくださいtest1。html に 1 回、javascript に 2 回あります。

検索に「khglkgliy」と入力してください

編集:これはより簡単な例です - リストにないものを入力してください - http://jsfiddle.net/LUsMb/614/

4

2 に答える 2

3

ファイルselect2.js行682を確認してください

this.dropdown.bind("click mouseup mousedown", function (e) { e.stopPropagation(); });

ここでクリックイベントが停止すると考えています。

于 2013-03-30T09:37:46.420 に答える
1

あなたの jsFiddle で問題を再現することはできません (jsFiddle で実際に新しいオブジェクトを作成する方法がわかりません) が、.on()イベント リスナーで次のような理由が考えられます。

$("#volatiles_container").on("click", ".volatile", function() { ... });

新しく作成された要素では機能しません:

  1. それらは#volatiles_containerオブジェクトの子ではありません。
  2. 新しく作成されたオブジェクトが selector と一致しません".volatile"
  3. クリック イベントを受信して​​いる、新しく作成されたオブジェクトの上に他のオブジェクトがあります。
  4. 別のクリック ハンドラーがイベントの伝達を停止しているため、イベント ハンドラーを持つ要素にイベントがバブルアップしません。

あなたのイベント ハンドラーは現在最上位のドキュメントに適用されているため、4 番目の項目だと思います。可能な限り動的要素に近いイベント ハンドラーを使用することをお勧めします。

于 2013-03-30T09:33:44.793 に答える