jQuery, который ищет детей, если у них есть определенный класс, если они этого не делают, это займет класс - PullRequest
0 голосов
/ 02 августа 2011

Мне нужно написать 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, чтобы увидеть, есть ли у него потомок с таким именем класса, и если нет, я хочудайте ul тест класса, например, но я хочу дать конкретный ul класс, так что не стоит сначала его ловить, это или что-то ??

Ответы [ 3 ]

3 голосов
/ 02 августа 2011
 if($('ul li.test').length == 0){
   $('ul').addClass('classToAdd');
 }

Вы можете сделать это более конкретным, если требуется, присвоив элементу ul Id и изменив ul на #someId в приведенном выше коде:

 if($('#someId li.test').length == 0){
   $('#someId').addClass('classToAdd');
 }
0 голосов
/ 02 августа 2011
$i = 0 ;

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

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

      $i++;
    }

});

if($i == 0 ) {

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

}
0 голосов
/ 02 августа 2011
var ul = $('ul#some-id');

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

Код в блоке if будет выполняться только в том случае, если ul.find('li.test') возвращает непустую коллекцию.Пожалуйста, измените класс "test" на то, что вы хотите проверить для <li/> детей.

...