2010-11-29 2 views
3

Я реализую поведение в стиле гармони, когда в одной точке может отображаться только один элемент. Я подумал, что было бы проще реализовать функцию show(e), которая берет элемент, e, который будет отображаться и скрывает все, НО e. Это избавляет меня от хлопот отслеживания того, какой элемент отображается. Я мог бы просто прикрепить show(e) в качестве обратного вызова для каждого элемента аккордеона.jQuery фильтр из определенного элемента

Чтобы сделать это, я думал, единственный способ заключается в использовании .each() для перебора всех элементов объявлений сравнить каждый один к e, скрывая его, если он не равен e.

Однако, напомню, что существует функция jQuery .filter (http://api.jquery.com/filter/), но она соответствует только элементу, а не наоборот. (То есть, если я вызываю функцию и передать его e он будет соответствовать только e и не все, но e.)

Есть ли способ сделать это, или есть какие-либо рекомендации по созданию аккордеон в целом? Заранее спасибо!

ответ

3

Хорошо, тогда вам следует рассмотреть возможность использования функции .not().

var excludeTheseDOMElements = $('#something'); 
$('match_something').not(excludeTheseDOMElements).each(function(){ 
    //do stuff here 
}); 

UPDATE:

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

$('match_something:not(#something)').each(function(){ 
    //do stuff here 
}); 
+0

... это потрясающе. большое спасибо. («Вы можете принять ответ за 3 минуты») – munchybunch 2010-11-29 20:07:40

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