régression de sélection après mise à niveau 1.3.2 jQuery
-
18-09-2019 - |
Question
Je l'ai récemment mis à jour une application de jQuery 1.2 à 1.3.2 -. Et nous avons trouvé une régression assez étrange
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)
Dans le cadre 1.2 trouverait toutes les étapes, même nous avons ajouté dynamiquement. Sous 1.3 ne trouve jamais la première étape.
Cela ne fonctionne pas non plus:
#("#steps .removeStep").click(removeStepFunc)
Cependant, cela ne:
#("#steps).children().find(".removeStep").click(removeStepFunc)
Je ne peux évidemment contourner le problème, mais il ne me fait un peu nerveux que peut-être il y a d'autres régressions similaires affectant l'application maintenant, nous avons mis à jour, qui ne se présenteront dans certains cas, lorsque nous avons plus d'un élément correspondance.
Aussi je vois cette autre question, que je soupçonne peut-être le même problème?
sélecteur jQuery bug? sélecteur composé par rapport sélecteur simple et trouver ()
La solution 2
ont maintenant résolu ce problème après avoir trébuché sur ce poste:
http://groups.google.com/group/jquery -FR / browse_thread / fil / ae61896a809f6cf0
Les problèmes ont été éprouviez ont été causés par notre utilisation d'une ancienne version du plugin Validator jQuery (v1.3) qui était incompatible avec jQuery 1.3.2. Le problème a été résolu, maintenant que nous avons mis à jour à v1.6.
Autres conseils
Effectuez les opérations suivantes:
jQuery('#steps > .removeStep').click(removeStepFunc)
ou
jQuery('#steps .step .removeStep').click(removeStepFunc)
étape 1
X
étape 2
X
UPDATE
Qu'en est-il quelque chose comme ça? (Non testé):
jQuery('#steps .removeStep').click( function() {
jQuery(this).remove(jQuery(this).parent());
});