Распространяется ли событие onchange? - PullRequest
38 голосов
/ 05 ноября 2008

Я использую делегирование событий для прослушивания событий ниже в DOM, но оно не работает для события onchange в поле выбора. Событие onchange распространяется или всплывает DOM?

Google не смог найти окончательный ответ.

Ответы [ 4 ]

37 голосов
/ 05 ноября 2008

Согласно спецификации , change, submit, reset должны пузыриться, а focus и blur не должны пузыриться.

Это поведение правильно реализовано во всех веб-браузерах, кроме IE <9, то есть <code>change, submit, reset правильно отображают пузырьки в IE> = 9.

См. https://stackoverflow.com/a/4722246/227299 для обхода jQuery на старых версиях IE

23 голосов
/ 18 января 2011

В jQuery 1.4+ событие изменения всплывает во всех браузерах, включая IE.

$('div.field_container').change(function() {
   // code here runs in all browers, including IE.
});
0 голосов
/ 05 ноября 2008

Я давно не занимался этим, но в прошлый раз я вспомнил, что Firefox распознал событие в элементе <SELECT>, а IE6 распознал только события в тегах <OPTION>. Насколько я помню.

IE7 не было в то время.

Так что, если это так, то имеет больше смысла не писать встроенный обработчик событий и вместо этого применять его в DOM ready, иначе у вас будет много загрязненного, повторяющегося кода.

0 голосов
/ 05 ноября 2008

Не уверен, получу ли я вопрос, но если вы это имеете в виду, то НЕТ.

<div id="foo">
  <select onchange="alert('hi');">
    <option>Hello</option>
    <option>World</option>
  </select>
</foo>

Где у div id = "foo" будет событие onchange ... всплывающее из списка выбора?


в связанной заметке, просто к вашему сведению, вы не можете прикрепить событие к опциям в списке выбора в IE (ну, вы можете, но оно не сработает)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...