Проверьте, все ли предметы имеют одинаковый класс - PullRequest
13 голосов
/ 20 сентября 2011

Я создал страницу часто задаваемых вопросов с возможностью скрывать и показывать содержимое под каждым вопросом.У меня есть функция «Развернуть все», которая позволяет пользователю отображать все вопросы по клику.Когда вопрос расширен, он получает класс «selected».

Я пытаюсь изменить статус «Expand All», когда все вопросы (LI) развернуты.

Как я могу проверитьчто все LI имеют «выбранный» КЛАСС одновременно?

Я использую КАЖДЫЙ метод для получения LI и их КЛАССА.

Заранее спасибо

Ответы [ 7 ]

29 голосов
/ 20 сентября 2011

Вероятно, вы можете посчитать элементы списка с классом selected для всех элементов списка:

if ($("#questions li.selected").length == $("#questions li").length) {
    // all list items are selected
}

#questions - это элемент, который содержит ваш список, и, конечно, он может отличаться в вашем коде, но вы должны понять.

10 голосов
/ 20 сентября 2011
$("li:not(.selected)").length

даст вам число <li> с, которые не имеют выбранный класс.Если бы эта цифра была нулевой, вы могли бы запустить свою логику.

8 голосов
/ 20 сентября 2011

Выберите все элементы списка, отфильтруйте элементы, принадлежащие к определенному классу, а затем определите, остались ли они:

if($("li").not(".className").length > 0 ) {
    //code
}
3 голосов
/ 20 сентября 2011

Вы можете сравнить количество элементов li с количеством элементов li с классом «selected».Если эти числа одинаковы, то все элементы li имеют этот класс:

if($("li").length == $("li.selected").length) {
   //All li elements have class selected
}

Это можно сделать в любой момент, не нужно входить в цикл each.

2 голосов
/ 03 марта 2016

Или вы можете попробовать это с size()

if( $("li.success").size() == $("li").size() ){
    //return true
}
0 голосов
/ 20 сентября 2011

Когда я правильно понял, вы хотите установить класс selected для всех ваших элементов li при нажатии кнопки ShowAll?

Вам не нужно повторять себя для всех li элементов.

Просто выберите их и назовите addClass:

$('li').addClass('selected');
0 голосов
/ 20 сентября 2011

Я не уверен, что понимаю проблему, но проверяя, есть ли у объекта jQuery класс, вы используете .hasClass () .

...