0

我最近将一个应用程序从 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 选择器错误?组合选择器 vs. 简单选择器 & find()

4

2 回答 2

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());
});
于 2009-12-08T19:28:07.670 回答
0

在偶然发现这篇文章后,现在已经解决了这个问题:

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

遇到的问题是由于我们使用了与 jQuery 1.3.2 不兼容的旧版本的 jQuery Validator 插件 (v1.3) 引起的。现在我们已将其更新到 v1.6,该问题已得到解决。

于 2010-01-12T01:00:55.587 回答