jQuery - проблема с селектором not () - PullRequest
1 голос
/ 08 декабря 2011

Внутри div.row: visible Я хочу fadeOut всех дочерних элементов (), у которых нет класса span.sandwich: visible, хотя у меня возникают проблемы с его выяснением.

вот что у меня есть

$('div.row:visible').children('span.sandwich:visible').not('.sandwich:visible').fadeOut('200');

, который, кажется, не работает, может кто-нибудь помочь мне здесь

HTML

<div class='row'>
    <span class='sandwich'>sandwich</span>
</div>
<div class='row'>
    <span class='not-sandwich'>not sandwich</span>
</div>

Ответы [ 3 ]

1 голос
/ 08 декабря 2011

Возможно, это путает с селектором в дочерних элементах, вы пробовали что-то вроде следующего, которое должно выбрать всех дочерних элементов, а затем сузить этот выбор:

$('div.row:visible').children().not('.sandwich:visible').fadeOut('200');
0 голосов
/ 08 декабря 2011

Только для уточнения:

которые не имеют класса span.sandwich:visible

span.sandwich:visible это не класс.

sandwich это класс.

span.sandwich - это любой элемент span с классом sandwich.

span.sandwich:visible - это любой элемент span с классом sandwich, равным visible.

Итак, пытаясь интерпретировать ваш вопрос, я получаю:

Внутри "div.row: visible" ...

В пределах видимых div элементов с классом row ...

Я хочу исчезнуть все дочерние элементы (), у которых нет класса span.sandwich: visible

Вы хотите, чтобы fadeOut() все не visible span элементов с классом sandwich, которые являются потомками div.row.

Для меня это означает

$('div.row:visible').children('span.sandwich:not(:visible)').fadeOut('200');

Учитывая ваш HTML, который вы только что добавили:

$('span').not('.sandwich').fadeOut(200);

Исчезнет весь промежуток:

<span class='not-sandwich'>not sandwich</span>

$('span').not('.sandwich').parent().fadeOut(200);

Исчезнет весь div:

<div class='row'>
    <span class='not-sandwich'>not sandwich</span>
</div>

ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ НА ОСНОВЕ КОММЕНТАРИЙ

http://jsfiddle.net/DDmsh/4/

и если вы хотите указать только div.row родителей: http://jsfiddle.net/DDmsh/5/

0 голосов
/ 08 декабря 2011

У меня возникли проблемы перед последовательным выбором методов jQuery, и я смог обойти эти проблемы, вложив селекторы, как показано ниже:

$($($('div.row:visible').children('span.sandwich:visible')).not('.sandwich:visible')).fadeOut('200');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...