Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jquery filter out specific element

I'm implementing accordion-style behavior, where only one element can be displayed at one point. I thought it'd be simplistic to implement a show(e) function that takes an element, e, to be displayed and hides everything BUT e. It saves me the hassle of keeping track of which element is being displayed as well. I could just attach show(e) as a callback to each element of the accordion.

To do so, I was thinking the only way is to use .each() to iterate through all the elements ad compare each one to e, hiding it if it isn't equal to e.

However, I recall there being a jQuery .filter function (http://api.jquery.com/filter/) but it only matches with the element, and not the opposite. (i.e. if I call the function and pass it e it'll only match e and not everything BUT e.)

Is there any way to do so, or are there any recommendations for creating an accordion in general? Thanks in advance!

like image 976
munchybunch Avatar asked Jun 16 '26 10:06

munchybunch


1 Answers

Well then you should consider using .not() function.

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

UPDATE:

You can also use the :not() pseudo selector -

$('match_something:not(#something)').each(function(){
    //do stuff here
});
like image 173
Robin Maben Avatar answered Jun 18 '26 22:06

Robin Maben