Jquery:没有选择器不在ie中工作

时间:2010-05-04 07:59:16

标签: jquery jquery-selectors

我有以下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不完全兼容的东西?

提前致谢。

1 个答案:

答案 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
    });

});