升级到jQuery 1.3.2后的选择器回归

时间:2009-12-08 19:21:12

标签: jquery jquery-selectors jquery-1.3.2

我最近将应用程序从jQuery 1.2升级到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()

2 个答案:

答案 0 :(得分:0)

尝试以下方法:

jQuery('#steps > .removeStep').click(removeStepFunc)

jQuery('#steps .step .removeStep').click(removeStepFunc)
       步骤1      X           第2步      X   

更新

这样的事情怎么样? (另):

jQuery('#steps .removeStep').click( function() {
  jQuery(this).remove(jQuery(this).parent());
});

答案 1 :(得分:0)

在遇到这篇文章后,现在已经解决了这个问题:

http://groups.google.com/group/jquery-en/browse_thread/thread/ae61896a809f6cf0

我们使用与jQuery 1.3.2不兼容的旧版jQuery Validator插件(v1.3)导致了所遇到的问题。由于我们已将其更新为v1.6。

,问题已得到解决