jQuery如何删除或隐藏除选定的之外的所有html

鉴于以下标记:

some junk content
good content
more junk content
more good content
even more junk

我需要删除除了条形div之外的所有内容,所以我最终只会:

  
good content
more good content

我试过了: $('.foo :not(.bar)').hide(); 但是,不符合这一选择的元素显然仍然存在。

是否有一个匹配所有内容的选择器,或者我应该将条形div提取到新的var?

快而脏:

 $(function(){ var html = []; $('.bar').each(function(i, item) { html.push($(this).html()); }); $('.foo').html('
' + html.join('
') + '
'); });

您需要将内容包装在.foo元素内,在单独元素中的.bar元素之间。 否则,你不会隐藏这些混蛋而不隐藏整个.foo元素。

 
some junk content
good content
more junk content
more good content
even more junk

有了这样的包装器,你应该能够做到这样的事情:

 $(".foo > *:not(.bar)").hide(); 

或者,如果您不关心能够撤消:

 $(".foo > *:not(.bar)").remove();