44 votes

L'événement onchange se propage-t-il?

J'utilise la délégation d'événements pour écouter les événements situés plus bas dans le DOM, mais cela ne fonctionne pas pour un événement onchange dans une zone de sélection. L'événement onchange se propage-t-il ou fait-il bouillonner le DOM?

Google n'a pas réussi à trouver une réponse concluante.

41voto

Sergey Ilinsky Points 16803

Conformément au cahier des charges, "le changement", "soumettre", "reset" devrait bulle et "focus" et "flou" ne devrait pas bulle.

Ce comportement est mis en œuvre correctement dans tous les navigateurs sauf IE < 9, qui est, de modifier,de transmettre,de réinitialisation ne bulle correctement dans IE >= 9.

Voir http://stackoverflow.com/a/4722246/227299 pour un jQuery solution de contournement sur les anciennes versions d'IE

23voto

jcampbell1 Points 1888

Dans jQuery 1.4+, l'événement de changement apparait dans tous les navigateurs, y compris IE.

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

0voto

schonarth Points 436

Je ne me suis pas occupé de cela pendant un bon moment, mais la dernière fois, je me souviens que Firefox avait reconnu l'événement sur l'élément <SELECT> , alors que IE6 ne reconnaissait que les événements sur les <OPTION> Mots clés. Autant que je m'en souvienne.

IE7 n'était pas sorti à cette époque.

Donc, si c'est le cas, il est encore plus judicieux de ne pas écrire le gestionnaire d'événements en ligne et de ne pas l'appliquer sur DOM prêt, à la place de peur que votre code ne soit pollué et répétitif.

-2voto

scunliffe Points 30964

Je ne sais pas si j'ai la question, mais si vous voulez dire cela, alors NON.

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

Où div id = "foo" aurait un événement onchange ... bouillonnant dans la liste de sélection?


sur une note connexe, vous ne pouvez pas associer un événement aux options de la liste de sélection dans IE (vous pouvez le faire, mais cela ne se déclenchera pas)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X