Как выбрать элементы, которые не имеют ни одного из нескольких классов, используя jQuery? - PullRequest
3 голосов
/ 20 июня 2011

У меня есть страница со многими элементами, к которым прикреплен один и тот же класс:

<div class="everyDiv"></div>
<div class="everyDiv"></div>
<div class="everyDiv"></div>
<div class="everyDiv"></div>
...

Я добавляю дополнительные классы на основе фильтров, которые пользователь выбирает, чтобы скрыть / отобразить их:

<div class="everyDiv hide1"></div>
<div class="everyDiv hide2"></div>
<div class="everyDiv hide3"></div>
<div class="everyDiv hide2 hide3"></div>
...

Теперь мне нужно выбрать диапазон (используя slice()) из .everyDiv элементов, которые НЕ имеют какой-либо из классов "скрытия" - .hide1 .hide2 .hide3.

Как я могу сделать это с помощью jQuery?

Я безуспешно пробовал следующее:

$("div.everyDiv").not(".hide1").not(".hide2").not(".hide3").slice(n1, n2);

$("div.everyDiv:not(.hide1):not(.hide2):not(.hide3)").slice(n1, n2);

Это тоже не работает:

$("div.everyDiv:not(.hide1), div.everyDiv:not(.hide2), div.everyDiv:not(.hide3)").slice(n1, n2);

По сути, все классы "hide #" имеют CSS display: none;, поэтому мне нужно выбрать указанный диапазон элементов div, которые не являются "скрытыми".

Ответы [ 8 ]

13 голосов
/ 20 июня 2011

это должно сделать это:

$('div.everyDiv:not(.hide1, .hide2, .hide3)').hide();

http://jsfiddle.net/s9uyk/

согласно комментариям: сделать немного более очевидным, что делает скрипка: не добавляет класс ко всем тем, которые не имеют ни одного из классов скрытия. http://jsfiddle.net/s9uyk/2/

2 голосов
/ 20 июня 2011
$('div.everyDiv').not(".hide1, .hide2, .hide3")

с рабочим Jsfiddle demo

1 голос
/ 20 июня 2011

Это работает

$("div.everyDiv").not(".hide1, .hide2, .hide3")

Успешно выбираются элементы, которые НЕ имеют .hide1, .hide2, .hide3. Проверьте мой пример на jsfiddle . Он успешно скрывает элементы, которые не соответствуют критериям, оставляя те, которые не видны. В этом случае он оставляет 1,2,3,4 видимыми, потому что они действительно имеют классы .hide1, .hide2, .hide3.

0 голосов
/ 20 июня 2011

Я думаю, что ваш селектор в порядке - вы просто ничего не делаете с ним. Попробуйте это:

$("div.everyDiv").not(".hide1").not(".hide2").not(".hide3").fadeOut(1000);

Вы также можете упростить этот селектор:

$("div.everyDiv").not(".hide1, .hide2, .hide3").fadeOut(1000);

Вы можете увидеть, как это работает здесь:

http://jsfiddle.net/nS4jC/1/

0 голосов
/ 20 июня 2011

Попробуйте

$("[class=class2]")

или

$('.someclass[class="someclass"]')
0 голосов
/ 20 июня 2011
$("div.everyDiv").not(".hide1").not(".hide2").not(".hide3");
0 голосов
/ 20 июня 2011

Кажется, у меня работает:

http://jsfiddle.net/maniator/mTkNL/

0 голосов
/ 20 июня 2011
$("div.everyDiv:not(.hide1), div.everyDiv:not(.hide2), div.everyDiv:not(.hide3)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...