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



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

----> 所有<li>没有任何类<ul>

在这个例子中,我只想要注释<ul><li>父级:

.HTML

<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]"),所以我尝试了这样的事情:

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

这显然不起作用,因为 jQuery 正在寻找具有嵌套<ul>但没有任何类的<li>

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

而不是使用

$('#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>

li 上使用 filter(),然后检查子项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>
});

var $li = $('#myList li').filter(function(){
    return $('ul:not([class])',this).length > 0    //$('child','context') selector
});
console.log($li)
<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>

尝试$('#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>

我真的很讨厌那个"太短而不能成为答案"......

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

似乎是最简单的一个来完成这项工作?

最新更新