フォームを含む Web ページがあり、それらのフォームの 1 つが送信されるたびに、または後でページに追加されたフォームが送信されるたびにハンドラーをトリガーしたいとします。どちらの方法が優れていますか:
$('form').on('submit', handler);
また
$(document).on('submit', 'form', handler);
フォームを含む Web ページがあり、それらのフォームの 1 つが送信されるたびに、または後でページに追加されたフォームが送信されるたびにハンドラーをトリガーしたいとします。どちらの方法が優れていますか:
$('form').on('submit', handler);
また
$(document).on('submit', 'form', handler);
どちらが優れているかではなく、どちらがニーズにより適しているかです。どちらの方法も優れており、用途があります。
前者はフォーム内で発生する送信のみをリッスンし、後者はすべての送信をリッスンし、それらが にバブリングするのを待ってからdocument
、handler
コールバックを起動します。
では、 のすべての場所で発生する可能性があるoronsubmit
のように大きな違いはないことに注意してください。送信は でのみ発生しますが、ドキュメントまでずっとバブルします。mousemove
click
<body>
<forms>
後で動的にページに追加するフォームに適用したい場合、後者はまったく機能する唯一のバージョンです。
(正直なところ、ページに何千ものフォームがない限り、パフォーマンスの違いはそれほど重要ではありません)