Убедитесь, что все элементы имеют один и тот же класс

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

Я пытаюсь изменить статус "Развернуть все", когда все вопросы (LI) будут расширены.

Как я могу проверить, что все LI имеют CLASS "selected" одновременно?

Я использую метод EACH для получения LI и их CLASS.

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

Ответ 1

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

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

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

Ответ 2

$("li:not(.selected)").length

Дал бы вам номер <li>, у которого нет класса 'selected'. Если этот показатель равен нулю, вы можете запустить свою логику.

Ответ 3

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

if($("li").not(".className").length > 0 ) {
    //code
}

Ответ 4

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

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

Вы можете сделать это в любой момент, ему не нужно проходить внутри цикла each.

Ответ 5

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

if( $("li.success").size() == $("li").size() ){
    //return true
}

Ответ 6

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

Ответ 7

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

Вам не нужно выполнять итерацию по всем элементам li.

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

$('li').addClass('selected');