【发布时间】:2011-08-16 21:07:29
【问题描述】:
我们有一些现有的 JavaScript 用于启用/禁用一堆复选框。从 JQuery 1.4.4 升级到 1.6.2 后,它停止工作。以下是每个复选框的 HTML 外观:
<li class="option_row">
<input id="checked27" class="checkbox normal" type="checkbox" disabled="disabled" checked="checked">
<label class="disabled" for="checked27">
<span>Foo</span>
</label>
</li>
启用复选框的 JavaScript 附加到一个链接(使用类“enableCheckboxesLink”):
var checkboxes = $('.checkbox');
$('.enableCheckboxesLink').click(function() {
checkboxes.attr('disabled', '').next().removeClass('disabled');
});
换句话说,我们将 JavaScript 附加到“enableCheckboxesLink”,它会查找所有复选框(即所有具有“checkbox”类的元素)并删除“disabled”属性。
当我停止浏览 JQuery 1.6.2 中的代码时,我可以看到 var "checkboxes" 包含例如“input#checked27.checkbox”,即上面的复选框。但是当我执行上面的最后一行时,它只会从 label 中删除“禁用”属性,而不是复选框。为什么?这是 JQuery 1.6.2 中的错误吗?它在 JQuery 1.4.4 中工作(也就是说,上面的代码同时启用了复选框和标签)。
【问题讨论】:
-
我认为这是一个错字,但你没有关闭
-
@Matthew,我想我是从 Firebug 树显示或其他东西而不是实际来源复制/粘贴的——这可能是没有结尾斜杠的原因。