jQuery - 没有任何类的孩子(不是特定的类)

时间:2016-07-08 09:39:27

标签: javascript jquery

所以,伙计们,基本上我需要找到的东西:

----&GT;所有<li> <ul>没有任何课程。

在此示例中,我只想要评论<li>的{​​{1}}父级:

HTML

<ul>

我了解<ul id="myList"> <li> <a>Item 1</a> <ul class="someClass"> </ul> </li> <li> <!--------- Just Need This One ----------> <a>Item 2</a> <ul> </ul> </li> <li> <a>Item 3</a> <ul class="justAnotherClass"> </ul> </li> </ul> ,所以我尝试了类似的内容:

.not("[class]")

这显然不起作用,因为jQuery正在寻找具有嵌套$('#myList li').has('ul').not("[class]") 但没有任何类的<li>

所以,伙计们,有人可以帮忙吗? :)

4 个答案:

答案 0 :(得分:1)

而不是使用

$('#myList li').has('ul').not("[class]")

你可以使用

$('#myList > li').has('ul:not([class])')

您也可以使用此选择器

$('#myList > li:has(ul:not([class]))')

$('#myList > li:has(ul:not([class]))').css('background' , 'red');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="myList">
    <li>
        <a>Item 1</a>
        <ul class="someClass">

        </ul>
    </li>
    <li>
        <a>Item 2</a>
        <ul>    <!--------- Just Need This One ---------->
        
        </ul>
    </li>
    <li>
        <a>Item 3</a>
        <ul class="justAnotherClass">
        
        </ul>
    </li>
</ul>

答案 1 :(得分:1)

使用filter()而不是li,然后检查没有任何ul class的儿童.length

$('#myList li').filter(function(){
    return $('ul:not([class])',this).length > 0    //$('child','context') selector
    //or $('> ul:not([class])',this) in case of direct <ul>
});

&#13;
&#13;
var $li = $('#myList li').filter(function(){
    return $('ul:not([class])',this).length > 0    //$('child','context') selector
});

console.log($li)
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ul id="myList">
    <li>
        <a>Item 1</a>
        <ul class="someClass">

        </ul>
    </li>
    <li>
        <a>Item 2</a>
        <ul>    <!--------- Just Need This One ---------->

        </ul>
    </li>
    <li>
        <a>Item 3</a>
        <ul class="justAnotherClass">

        </ul>
    </li>
</ul>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

尝试$('#myList li ul').filter(':not([class])')

console.log($('#myList li ul').filter(':not([class])').html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<ul id="myList">
    <li>
        <a>Item 1</a>
        <ul class="someClass">

        </ul>
    </li>
    <li>
        <a>Item 2</a>
        <ul>    <!--------- Just Need This One ---------->

        </ul>
    </li>
    <li>
        <a>Item 3</a>
        <ul class="justAnotherClass">

        </ul>
    </li>
</ul>

答案 3 :(得分:0)

我真的很讨厌“太短暂无法回答”....

$('#myList li > ul:not([class])')

似乎是最简单的工作吗?