Недавно я обновил приложение от jQuery 1.2 до 1.3.2 - и мы обнаружили довольно странную регрессию.Селекционная регрессия после обновления до jQuery 1.3.2
Для некоторых HTML примерно как это (упрощенный бит)
<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>
Ранее мы прикрепленного событие, как это так, для всех этапов:
$("#steps").find(".removeStep").click(removeStepFunc)
Под 1.2 это было бы найти все шаги , даже те, которые мы динамически добавили. В 1.3 это только когда-либо находит первый шаг.
Это также не работает:
#("#steps .removeStep").click(removeStepFunc)
Однако это делает:
#("#steps).children().find(".removeStep").click(removeStepFunc)
я, очевидно, обойти эту проблему, но это действительно заставляет меня немного нервничать, что, возможно, есть другие подобные регрессии, влияющие на приложение, которые мы сейчас обновили, которые будут представлены только в некоторых случаях, когда у нас есть более одного элемента для соответствия.
Также я вижу этот другой вопрос, который, как я подозреваю, может быть той же проблемой?
jQuery selector bug? composed selector vs. simple selector & find()
Для меня jQuery 1.3.2 выбирает оба .removeStep DIVs и прикрепляет события к обоим (ночная сборка Firefox). Фактически, все три селектора, которые вы подробно описываете выше, возвращают оба этих элемента для меня. В каком браузере вы это пытаетесь? Могли бы вы иметь более одного элемента с идентификаторами «шаги»? –
Дополнительно - $ (". RemoveStep") также возвращает только первый элемент ... это на FireFox 3.5.5 – Bittercoder
$ ('. RemoveStep') также возвращает обе записи. Вы проверяете с помощью console.log ($ ('. RemoveStep')), чтобы увидеть, что элементы найдены, и что это не что-то не так с вашим обработчиком кликов? –