問題タブ [event-delegation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
535 参照

javascript - jquery on() でイベント委譲が機能しないのはなぜですか

私は最新の jQuery を使用していますが、これ.live()は非推奨であり、.on()代わりに使用する必要があります。クリックイベントをボタンに付けるのに問題があります。ボタンの値を動的に変更し、2 つのケースを処理できるはずです

これはデモです:jsfiddle

0 投票する
2 に答える
791 参照

javascript - イベント委任処理について

同じページのさまざまなフォームにイベント委任を使用しようとしています。ただし、フォームを送信しようとすると、興味深い問題が発生します。

イベント委任が本質的にフォーム全体に「クリック」を設定することを十分に理解して、1つのフォーム(送信ボタン用)で「クリック」を試みました。

ただし、問題は、フォームまたはボタン要素だけでなく、実際には「クリック」イベントがページ全体に設定されているという事実から生じます。そのため、ページをクリックすると、フォームの「クリック」イベントがトリガーされます。そして、これはすべてのブラウザで発生しています。

「変更」イベントについても同じことが起こっています。フォームに「変更」イベントを設定すると、フォームの子フィールドと特定のフォーム ノード外の他のフィールドの両方に対してトリガーされます。

そのため、以前にイベント委任について質問されたことは知っていますが、実際にはこの問題には答えていません。それも問題ですか?たぶん、これはイベントの委任がどのように機能することを意図しているのでしょうか? しかし、そうであれば、ドキュメント全体に対してイベントがトリガーされるのはメモリの無駄ではありませんか? 解決策は何ですか?

また、純粋な Javascript での伝播を停止するクロスブラウザの方法はありますか? 私が見つけた最高のものはQuirksmode.orgでした:

トリガーされたときにイベントをタイプ別にフィルターできることは知っていますが、できることはそれだけですか? これを理解するのを手伝ってください!

編集:

特定の質問は、特定のフィールドでイベントを処理するためにイベントをフォームに委任すると、ドキュメントの残りのイベントもトリガーされるかどうかです。もしそうなら、これをどのように処理しますか?また、これがイベント委任の意図した動作でない場合、何が原因である可能性がありますか?

0 投票する
2 に答える
152 参照

jquery - .on() mouseenter イベントは機能しますが、クリックは機能しません jquery 2

私の心は動揺しています。これが「mouseenter」では機能するのに「click」では機能しない理由を誰か教えてもらえますか?

http://jsfiddle.net/jxUGw/3/

0 投票する
4 に答える
467 参照

jquery - .on 1.9.1 jquery バージョンで動作しない

追加された div を本文から非表示にしたい。.onjQuery 1.9.1 で使用していますが、動作しません。

0 投票する
2 に答える
335 参照

javascript - jqueryの動的要素にクラスを適用する

動的入力を作成してそれにクラスを適用していますが、機能していません。
私のクラス:

私のコード:

他の要素に適用された同じクラスは正常に機能しています。どんな助けでも

0 投票する
2 に答える
186 参照

jquery - jQuery.prepend によって追加されたコンテンツがクリックできない (.on によってトリガーされた場合でも)

ご協力ありがとうございます。このサイトは素晴らしいリソースです。

私の問題: 作業中のサイトでメニューが開かれると、(本体に) div オーバーレイを追加し、クリックしてメニューを閉じてそれ自体を削除できるようにするクラスを与えます。これは、ユーザーが「閉じる」ボタンをクリックするのではなく、メニューの外側の任意の場所をクリックしてメニューを閉じることができるようにするためです。これは簡単に聞こえますが、うまく機能させることができません。

コンテンツを DOM に追加しているため、「バインディング」の問題があることがわかっているので、.click() の代わりに .on() を使用しました。これにより、トリガー イベントを新しく作成した div にバインドできると考えました。私も .bind() を試しましたが、正直なところ、これらの違いを理解していないため、現時点ではコードを推測しているだけです。とても単純に見えるものにプラグインを使用したくないので、経験豊富な皆さん、つまり皆さんにとってすぐに明らかになる簡単なエラーがいくつかあることを願っています。;) これが私の jQuery 関数です。「#the-overlay」をクリックしても何も起こらないことを除いて、すべてが私が望むように機能します。

私の質問が何らかの形で規則に違反している場合は、ご容赦ください。繰り返しを避けるために答えを探しましたが、見つけたものはすべて、.on() または非推奨の .live() で問題が解決されることを示していました。

ありがとうございました。

0 投票する
2 に答える
168 参照

javascript - jQuery load()/イベント委任の問題

わかりました、イベント委任について知りました。クリックの問題: 動的に生成されたリンクがクリック機能をトリガーしませんここでの問題は次のとおりです。

UL は、jQuery の load() 呼び出しを介して読み込まれます。

jQuery の最初の部分は、ページネーション リンクを使用して上記の UL に読み込まれます。jquery の 2 番目の部分は、クリックしたページネーション リンクからページネーション ページ番号を取得します。問題は次のとおりです。

#accountActivityページネーション リンクをクリックすると、更新されたページが読み込まれません。これは委任の問題ですか、それとも私がやろうとしていることは不可能#accountActivityですか。初期ロードは?!

すべての助けを前もって感謝します。