Как отсеять часть элементов, выбираемых по селектору класса?

К примеру, есть некоторое количество блоков с классом .class, для этих блоков при определенных условиях выполняется $('.class').slideUp();

Можно ли какими-либо средствами jquery/underscrore предотвратить выполнение команды на некоторые элементы этого класса, допустим, чтобы блок с классом .class и ид .id не сворачивался?

Мне приходит на ум только одно решение - собрать NodeList конвертировать в массив и с помощью _.each() отсеять ненужные, но для этого нужна своя реализация slideUp(), и в итоге получается лапша говнокода.

Либо нужно как то изменить возвращаемый jquery объект, но у него очень запутанная структура.
Может я велосипед стараюсь изобрести?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 3
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
$(".class").not("#id").slideUp();

А еще есть filter и нестандартные селекторы для более сложных ситуаций:

$(".class").filter(function(){
    return this.value == this.offsetHeight;
}).slideUp();

$(".class:hidden").slideUp();
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
Вы можете просто уточнить селектор если есть четкие критерии отсева. К примеру $(".class[id!=someValue]")

UPD: или можно чуть запутаннее
$(".class").each(function(){
return elementIsValid(this) && doSomething();
})
Ответ написан
batareika
@batareika
$('.class:not(#id)').slideUp() подойдет?
:not()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы