jQuery:仅限IE,输入:check,即使选中项目也会返回0

时间:2010-02-01 21:13:46

标签: jquery internet-explorer

我看到一个错误,我无法从一小部分用户复制。这是代码:

var selected = $('#mytable input:checked');
if (selected.length == 0) {
    $('body').trigger('notice', 'Please select some items first');
    return;
}

即使用户检查了几个复选框,也会触发“通知”。似乎selected.length是不应该的时候为零。


[更新]选择器在更新为:

时有效
var selected = $('input[class="selection"]:checked');

似乎包括选择器中的id会破坏事物,仅在IE上。


此代码适用于绝大多数用户,我们无法复制该问题,但对于看到问题的用户来说,它是一致的,并且每次都会发生。

它似乎与IE隔离(虽然我不能确定)。我们正在使用jQuery 1.3.2(来自谷歌CDN)。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

粘贴周围的代码/事件处理程序是个好主意。首先,我建议您在第一行使用:checkbox选择器:

$('#mytable input:checkbox:checked')

手册说:

  

$(':checkbox')相当于   $('*:checkbox'),所以   应该使用$('input:checkbox')   代替。

当然,这可能没有任何区别。 :checkbox相当于$('[type=checkbox]'),因此可能是IE在选择器的input:checked部分窒息,该部分正在测试所有 checked状态的输入元素。

答案 1 :(得分:1)

我遇到了类似的问题,在我的生活中,我无法让IE识别出一个已被另一个事件处理程序以编程方式“检查”的方框。

诉诸:

$("input[name='iptName'][CHECKED]").size()

显然,IE(8种风味)对此案敏感。 ':checked',':CHECKED','[checked]'不行。

其他人遇到这个?