問題タブ [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.
jquery - 1.7.2でのjQueryイベントの委任
から委任する以外に、セレクターに一致するページ上のすべての要素に対応するjQueryを使用してイベントを委任する方法はあります$(document)
か?
それはおそらく言葉遣いが悪いので、ここにこすりがあります:
以前jQuery.live
は、セレクターに一致するすべての要素にイベントが委任されていました。これはjQuery.delegate
、特定のコンテキストセレクター内のイベントをその子に委任することによって置き換えられましたjQuery.on
。これは、実質的に同じことを実行しますが、舞台裏で異なるビットを使用するによって置き換えられました(私は想像します)。
私がやりたいのはdiv.foo
、どこに住んでいるか、いつ住んでいるかに関係なく、ページ上のすべてにイベントハンドラーを安全に追加することです。.foo
ドキュメントと実証研究によると、以下はスクリプトの実行時に存在する要素にのみバインドされます。後でページに要素を配置する可能性のあるコードがあるため.foo
、これは正確には機能しません。
は廃止された(おそらく削除された?)のでlive
、私はそれを使わないようにしていますが、私が思いつくことができる唯一の解決策は
しかし、これlive
は舞台裏で最初に行われたことではありませんか?もっと要点を言えば、これを行わない重要な理由はありますか?
特にバージョン1.7.2を使用していますが、一般的なjQueryの回答も役立ちます。
javascript - イベントのJqueryは、存在しない要素をバインドしていません
ここでjsfiddleの例を見てみましょう
ホバーすると表示されるように、マウスオーバーイベントは発生しません。
どうすればこの問題を解決できますか?
私はJquery1.9を使用しています
javascript
jquery - テーブルのチェックボックスがすぐにオフになります
チェックボックス付きのテーブルがあります。チェックボックスをオンにすると、jQueryでイベントをキャッチしますが、このチェックボックスはすぐにオフになります。
jsfiddle: http: //jsfiddle.net/K4uDa
問題はどこだ?
申し訳ありませんが、ここでjsfiddleを更新しました:http://jsfiddle.net/K4uDa/1/
チェックボックスがオン/オフのときに他のイベントが発生しないようにするため、「returnfalse」を追加しました。
jquery - jQuery で on() を使用してコンテナーを取得する
div 内にその div を非表示にするボタンがあり、div をハンドラーに渡したいと思います。これが私の現在のコードです:
コンテナーの再選択を回避する方法はありますか? このようなものがいいでしょう:
jquery - .live関数を.onに変換する際の問題
いくつかのコードベースを更新し、私が克服できないように見える問題を抱えています。.onのドキュメントを読みましたが、十分に理解していると感じています。サインインすると、フォームはajax.loadを介して取り込まれます。問題はありません。次のような簡単な設定で:
.liveを使用する古いコードは次のようになります
new(ish).oncallをそのように使用しようとしています
動的要素#FXCMForm、イベントのタイプ "click"、およびそれをトリガーする要素 "#Button1"を含むコンテナーを呼び出しましたが、クリックすると、返されたPHPデータが空白のページにダンプされ、ajaxは実行されません。 。何か案は?ありがとうございました
javascript - event-delegation 使用時に要素に関連付けられたデータにアクセスする方法
n 個の行でイベント委任を使用しています。以前のアプローチでは、各行をイベントにバインドしていましたが、コードは次のようになりました。
注: このアプローチでは、各行要素 ( theDiv
) がそれぞれのデータにアクセスできます。
問題は、シングルクリックをバインドしcontainer
てデータにアクセスしたいということです。イベント委任のアプローチは次のようになります。
では、各行に関連付けられたデータにアクセスする方法は?
私の学習によると、データを追加できます
- data-*、しかしこれは私を単純なデータ型に制限します
- 要素に関連付けられた $.data
これを行う他の方法はありますか?
javascript - 動的に生成された削除クリックすると
<div>
クリックしたときにしようとしています。私がそれを試してみたとき、.live()
それは私に示しています:
オブジェクトにはメソッドlive()がありません
jQueryバージョン1.9を使用しlive
ているため、削除されました。
datatables - データテーブルテーブルへのon()を使用したjqueryイベントデリゲート
4ページのjqueryデータテーブルがあります。ページをロードすると、クリックイベントが正常に機能します。2 ページ目以降、クリック イベントが機能しません。http://api.jquery.com/on/の リンクを読みましたが、うまく機能させることができません。
テーブルは ajax クライアント側としてロードされます。ページ分割すると、テーブルが新しいデータで更新されます。クリック イベントを次の行セットにアタッチする方法
javascript - jQuery.on()はどのように機能しますか?
この関数のソースは見たことがありませんが、次のように機能するのでしょうか。
- セレクターで要素を選択します
- 提供されたイベントハンドラーをそれらに委任します
- そのセレクターでを実行し
setInterval
、常に委任を解除してから、同じイベント全体を再委任します
または、これに対する純粋なJavaScript DOMの説明がありますか?
jquery - jQuery: 単一の mouseenter/mouseleave ハンドラー
ページ上のすべての要素の mouseenter / mouseleave イベントを追跡する必要があります。
直感的に書かれたコードは次のとおりです。
ただし、子要素で mouseenter が発生するたびに mouseleave イベントが発生するため、mouseenter/mouseleave のすべての利点が無効になります。つまり、mouseover/mouseout のように機能します。
すべての要素にハンドラを直接アタッチせずにこれを処理する方法はありますか?
これは jQuery のバグのように見えますか? 私が知っていることと、読んだjQueryドキュメントから、上記のコードは正常に機能するように見えるためです。
遊ぶJSBin:http: //jsbin.com/axuluc/2/
編集:これは期待どおりに機能します: http://jsbin.com/axuluc/9/