Убедитесь, что все элементы имеют один и тот же класс
Я создал страницу часто задаваемых вопросов с возможностью скрытия и отображения содержимого под каждым вопросом.
У меня есть функция "Развернуть все", которая позволяет пользователю отображать все вопросы 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');