【问题标题】:Jquery :not selector not working in ieJquery:不是选择器在ie中不起作用
【发布时间】:2011-02-15 08:40:32
【问题描述】:

我有以下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)').length 获取 li 的长度返回 2 ,其他浏览器返回 0 和 1。

另外,获取第一个li的非标签子节点数($(this).children(':not(label)').length)返回4,同时获取子节点数($(this) .children().length) 返回 2。这对我来说毫无意义。

是我错了还是我使用的选择器中的某些内容与 IE 不完全兼容?

提前致谢。

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案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
        });
    

    });

    【讨论】:

    • 这适用于未选中的复选框,谢谢。但是我想要的是对未选中的复选框或没有值的元素做一些事情,这就是在内部 if 子句中包含 $(this).val() == "" 的原因。总而言之,我想遍历不是标签或收音机的元素,如果它们没有值或者它们是未选中的复选框,请执行一些操作。
    • 谢谢!该更新按预期工作!问题是:为什么不起作用,我的理解是将建议的选择器分成两个子句,即我的方法?
    • 我不太确定。我只是试图简化它。每当某些事情过于复杂时,就会出现一些问题:) 稍后我会更深入地研究一些东西,看看可能是什么导致了问题。
    猜你喜欢
    • 2011-05-29
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2013-12-13
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多