J'ai récemment mis à niveau une application de jQuery 1.2 à 1.3.2 - et nous avons trouvé une régression plutôt étrange.Régression de sélecteur après la mise à niveau vers jQuery 1.3.2
Pour certains html à peu près comme celui-ci (un peu simplifié)
<div id="steps">
<div class="step">
<span>step #1</span>
<div class="removeStep"> X </div>
</div>
<div class="step">
<span>step #2</span>
<div class="removeStep"> X </div>
</div>
</div>
Nous avons attaché précédemment un événement comme si, pour toutes les étapes:
$("#steps").find(".removeStep").click(removeStepFunc)
Under 1.2 trouverait toutes les étapes , même ceux que nous avons ajoutés dynamiquement. Sous 1.3, cela ne trouve jamais le premier pas.
Cela ne fonctionne pas non plus:
#("#steps .removeStep").click(removeStepFunc)
Cependant, cela ne:
#("#steps).children().find(".removeStep").click(removeStepFunc)
Je ne peux évidemment travailler autour de la question, mais il ne me fait un peu nerveux que peut-être il y a D'autres régressions similaires affectant l'application que nous avons mise à jour, ne se présenteront que dans certains cas lorsque nous aurons plus d'un élément à faire correspondre.
Également je vois cette autre question, qui je soupçonne pourrait être le même problème?
jQuery selector bug? composed selector vs. simple selector & find()
Pour moi, jQuery 1.3.2 sélectionne les deux .removeStep DIVs et attache les événements aux deux (build Firefox tous les soirs). En fait, les trois sélecteurs que vous détailler ci-dessus renvoient tous deux ces éléments pour moi. Quel navigateur essayez-vous cela? Pourriez-vous éventuellement avoir plus d'un élément avec l'identifiant "steps"? –
De plus - $ (". RemoveStep") retourne également le premier élément ... c'est sur FireFox 3.5.5 – Bittercoder
$ ('. RemoveStep') retourne aussi les deux entrées. Vérifiez-vous avec console.log ($ ('. RemoveStep')) pour voir que les éléments sont trouvés, et que ce n'est pas quelque chose de mal avec votre gestionnaire de clic? –