jQuery.find()IE7的bug?

时间:2010-02-24 17:07:44

标签: javascript jquery internet-explorer-7

我有几行代码,我使用这个函数,但它似乎只找到IE7中的第一个元素。适用于IE8 / FF / Chrome。

$(document).find("#JobID").attr('checked', $('#CheckAll').is(':checked'));

我也有一条类似的行,只找到第一个元素。

$(document).find("#JobID").each(function() { ... }

有谁知道这是一个已知错误还是一个变通方法?也许我没有使用正确的方法?

4 个答案:

答案 0 :(得分:5)

$(document).find("#JobID")获取文档中标识为JobID的元素。 ID在文档中是唯一的(参见[1]),因此最多应该有一个匹配的元素。请改为使用班级(例如$('.JobId'))。

1:http://www.w3.org/TR/html401/struct/global.html#h-7.5.2

答案 1 :(得分:1)

您应该使用以下代码:

$("#JobID").each(function () { ... });

没有任何理由使用$(document)

答案 2 :(得分:1)

你的问题是唯一的ID,没有两个元素应该共享一个ID(这不是有效的HTML),你似乎在那里有一堆id="JobID"。这应该是class="JobID",然后选择器是:

$(".JobID").attr('checked', $('#CheckAll').is(':checked'));

答案 3 :(得分:1)

'#'是文档ID选择器(元素上的id =“”)。每个dom id 都必须是唯一的,所以你有可能不止一次拥有相同的dom id而且IE7正在做一些奇怪的事情。然而,由于它无论如何都是不允许的,因此发生奇怪的事情就不足为奇了。

将您的选择器更改为dom id以外的其他选项,它应该可以正常工作。