web-dev-qa-db-ja.com

onchangeイベントは伝播しますか?

イベント委任を使用してDOMの下位のイベントをリッスンしていますが、選択ボックスのonchangeイベントでは機能しません。 onchangeイベントはDOMを伝播またはバブルアップしますか?

グーグルは決定的な答えを見つけることに失敗しました。

40
slashnick

仕様によるchangesubmitresetはバブルし、focusblurはバブルしない。

この動作は、IE <9、つまり、changesubmitresetを除くすべてのWebブラウザーで適切に実装されます。 IE> = 9。

古いIEバージョンでのjQueryの回避策については、 https://stackoverflow.com/a/4722246/227299 を参照してください。

39
Sergey Ilinsky

JQuery 1.4以降では、IEを含むすべてのブラウザで変更イベントが発生します。

$('div.field_container').change(function() {
   // code here runs in all browers, including IE.
});
23
jcampbell1

しばらくこれに対処していませんが、前回対処したとき、Firefoxは<SELECT>要素のイベントを認識しましたが、IE6は<OPTION>タグのイベントのみを認識したことを覚えています。覚えてる限り。

IE7はその時出ていませんでした。

したがって、これが当てはまる場合は、イベントハンドラーをインラインで記述せず、代わりにDOM対応に適用する方が理にかなっています。これにより、汚染された反復コードが大量に発生する可能性がなくなります。

0
schonarth