我最近将应用程序从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()
答案 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。
,问题已得到解决