2010-07-04 6 views
6

я удивляюсь, как я могу определить, если уль имеет более чем 2-х детей, и если есть двое детей с двумя конкретными классами внутри этой ул ...jquery: если дети с определенным классом?

if($(this).children().length > 2 && $(this).children('.section-title, .active')) { 
    $(this).append('<li class="dots">&hellip;</li>'); 
} 

???

+0

Не совсем понял вторую часть критериев. Вы просто говорите, что хотите знать, есть ли два класса в ul. – spinon

+0

Я думаю, он хочет увидеть, имеют ли две ульки разные классы. – Coronier

+0

да! в точку! Я хочу знать, есть ли БОЛЬШЕ двух детей (li) и если есть два li внутри с указанными классами. поэтому, если внутри ul есть ровно 3 li, нужно быть li с классом .section-title, а другой должен иметь имя класса .active! – matt

ответ

8
var $ul = $('ul'); 
if($ul.find("li").length > 2 && $ul.find('.active, .inactive').length == 2) { 
     alert('yes, it is this way'); 
}​ 

<ul> 
    <li class="active">Whatever</li> 
    <li class="inactive">Whatever</li> 
    <li>Whatever</li> 
    <li>Whatever</li> 
</ul>​ 

Demo: http://jsfiddle.net/RtTSM/1/

1
var ulChildren = $("li", this); 
if (ulChildren.length > 2 && $('li.section-title', ulChildren).length >= 1 && $('li.active', ulChildren).length >= 1) 

Это будет проверить следующие правила:

  1. Есть более двух Li элементов под ул
  2. Существует по меньшей мере, один Li с классом раздела-заголовка
  3. Там по меньшей мере, один Li с классом активного
+0

описание моей проблемы для меня довольно сложно;) Если у ul есть три li в ней, по крайней мере два из них должны иметь упомянутые имена классов. поэтому должны быть заполнены все три критерия. – matt

+0

Итак, позвольте мне немного подправить мой ответ, потому что это не совсем правильно. Вышеприведенное было бы близким, но оно прошло бы, если бы было 3 активных члена li в ul, и ни один раздел-заголовок, который звучит так, не то, что вы ищете. Поэтому позвольте мне изменить, чтобы убедиться, что есть хотя бы один заголовок раздела и один активный – spinon

+0

. Почему бы не просто «var ulChildren = $ (this) .children ('li')'? Кстати, у вас отсутствуют кавычки. Вероятно, это должно быть 'ulChildren.length> 2'. –

0
var ul = $('#ul_id'); 
if ($('.class1, .class2', ul).size()>2) 

вам не нужно, чтобы проверить первое условие (имеет более 2-х детей), так что это «И» состояние, и если ваш второй удовлетворяет условию, то первое условие тривиально.

Джеймс Лин

[email protected]

Смежные вопросы