2010-11-29 68 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