我有以下HTML代码:
<ul>
<li class="O">
<label for="radio1">Radio 1:</label>
<input type="radio" name="radio1" value="Yes" checked>Yes</input>
<input type="radio" name="radio1" value="No">No</input>
</li>
<li class="O">
<label for="checkbox1">Checkbox 1:</label>
<input type="checkbox" name="checkbox1" id="checkbox1" value="check"></input>
</li>
</ul>
使用jQuery我想对每个未选中的复选框做一些事情,或者在一个带有类O的li元素中使用空值的元素。这是我的方法:
$('li').each(function(){
if ($(this).hasClass('O')){
$(this).children(':not(label,input:radio)').each(function(){
if ( $(this).val() == "" || $(this).is(':checkbox:not(:checked)') ) {
//do something
}
});
}
此代码适用于FF,Opera,Chrome和Safari,但不适用于IE6-IE7。
使用两个IE,使用$(this).children(':not(label,input:radio)')获取li的长度.length返回2,其他浏览器返回0和1.
此外,获得第一个li的非标签子项($(this).children(':not(label)'。。length)返回4,同时获得子项数($(this) .children()。length)返回2.对我来说根本没有意义。
我错了还是我使用的选择器中有些与IE不完全兼容的东西?
提前致谢。
答案 0 :(得分:1)
如果我理解正确,你会尝试操作未经检查的复选框,并且在具有O类的li中。 我没有IE测试,但我简化了一下。你能试试吗?
$('li.O').each(function(){
$(this).children(':checkbox:not(:checked)').each(function(){
//stuff
});
});
更新:根据评论,您可以尝试:
$('li.O').each(function(){
$(this).children(':checkbox:not(:checked), :not(label,input:radio)[value=]').each(function(){
//stuff
});
});