如果他们有一个特定的类,搜索孩子的jQuery,如果他们不这样做,它将需要一个班级

时间:2011-08-02 12:04:47

标签: javascript jquery html-lists

我需要编写一个jQuery,在所有子级别循环一个ul儿童li,然后发现这些孩子中是否有任何一个类测试什么都不做,但如果他们都没有这个类,我想给主要的父级ul某个班级, 这是代码示例

<ul class="level1" id="navigation">
    <li class="hasChildNodes"><a href="#"><span>Community</span></a>
        <ul class="menuLevelContainer level2 hasChildNodes">
            <li class=""><a href="#"><span>Blogs</span></a></li>
            <li class=""><a href="#"><span>Discussions</span></a></li>
            <li class=""><a href="#"><span>Photos</span></a></li>
            <li class=""><a href="#"><span>Polls & Surveys</span></a></li>
            <li class=""><a href="#><span>Suggestions</span></a></li>
        </ul>
    </li>
    <li class=""><a href="/Events/Pages/default.aspx"><span>Events</span></a></li>
    <li class="hasChildNodes"><a href="/News/Pages/default.aspx"><span>News</span></a>
        <ul class="menuLevelContainer level2 hasChildNodes">
            <li class=""><a href="#"><span>Annoucements</span></a></li>
            <li class=""><a href="#"><span>Good Morning
                Done</span></a></li></ul>
    </li>

并且我想搜索ul的所有孩子,看看它是否有一个名为class的孩子,如果不是我想给ul进行类测试,例如,但是我想给出特定的ul类,所以不应该;首先捕获它,这个或什么?

3 个答案:

答案 0 :(得分:3)

 if($('ul li.test').length == 0){
   $('ul').addClass('classToAdd');
 }

如果需要,您可以通过在上面的代码中为ul元素提供Id并将ul更改为#someId来使其更具体:

 if($('#someId li.test').length == 0){
   $('#someId').addClass('classToAdd');
 }

答案 1 :(得分:0)

var ul = $('ul#some-id');

if (!ul.find('li.test')[0]) {
    ul.addClass('some-class');
}

if块中的代码仅在ul.find('li.test')返回非空集合时执行。请将课程“test”更改为您要测试<li/>子项的任何内容。

答案 2 :(得分:0)

$i = 0 ;

$('ul')find('li').each(function(){

    if($(this).hasClass('test')) {

      $i++;
    }

});

if($i == 0 ) {

   $('ul').addClass('main');

}