2014-02-07 4 views
0

Как я могу превратить это:JQuery .filter() элементы, которые не имеют переменную

activeSelector = '.active,.selected,.current'; 

$menuChildren.filter(activeSelector).find('.each-project-content-container').remove(); 

в фильтр, который не activeSelector?

Некоторые идеи, которые не работают, так что вы получите идею:

$menuChildren.filter(!activeSelector).find('.each-project-content-container').remove(); 
$menuChildren.filter(!=activeSelector).find('.each-project-content-container').remove(); 
$menuChildren.not(filter(activeSelector)).find('.each-project-content-container').remove(); 

ответ

1

Вы можете использовать not():

$menuChildren.not(activeSelector) 
0

Попробуйте это:

$menuChildren.filter(function(index) { 
    return $(this).not(activeSelector).find('.each-project-content-container').remove(); 
}); 

Это будет делать проверьте каждый элемент, который проходит через фильтр, и найдите элемент, который не имеет activeSelector строка. Если он найдет соответствующий элемент, он удалит дочерние элементы .each-project-content-container.

EDIT:

На самом деле, вам даже не нужен filter() вызов здесь. Вы можете просто выбрать все неактивные элементы, найти их детей указанного класса, и удаления:

$menuChildren.not(activeSelector).find('.each-project-content-container').remove(); 

Это действует так же, как и выше, и это еще один лайнер.

Смежные вопросы