在一个jquery行中隐藏除一个匹配项外的所有匹配项(如图所示)
似乎有很多答案,所以隐藏选择器中除一个元素外的所有元素,例如在一个jquery行中隐藏除一个匹配项外的所有匹配项(如图所示),jquery,hide,show,Jquery,Hide,Show,似乎有很多答案,所以隐藏选择器中除一个元素外的所有元素,例如 $('li').not('.shown').hide() 但如果元素先前已隐藏,则这不会显式地显示元素。为了解决这个问题,其他SO答案建议使用2行,其缺点是先隐藏所有元素,然后显示一个元素,这可能会导致闪烁: $('li').hide() $('li.shown').show() 是否有一种jQuery语法可以在单个循环中使用?我不确定是否 $('li').hide().filter('.shown').show() 将执行此操
$('li').not('.shown').hide()
但如果元素先前已隐藏,则这不会显式地显示元素。为了解决这个问题,其他SO答案建议使用2行,其缺点是先隐藏所有元素,然后显示一个元素,这可能会导致闪烁:
$('li').hide()
$('li.shown').show()
是否有一种jQuery语法可以在单个循环中使用?我不确定是否
$('li').hide().filter('.shown').show()
将执行此操作,或者这是否与2行程序相同,首先在所有匹配项上循环,然后再重新打开一个匹配项。您可以使用
$将两者链接起来。not('.show')
或:not(.show)
隐藏li
,然后使用$.end()
和$.filter('.show').show()
$('li').not('.show').hide().end().filter('.show').show()代码>
。如图所示{
显示:无;
}
asdf
福
显示
酒吧
谢谢。那么jQuery是否优化了这一点,使得.show
元素不会先隐藏,然后再显示?如何测试底层jQuery算法?显然,语法中似乎应该有足够的信息来明确意图。[编辑-抱歉,当然,'not'会那样做。Doh.]重复两次精炼过滤器('.show')似乎有点难看-我想没有内置内容。所有这些都在同一个列表中吗?他们是兄弟姐妹吗?或者他们可能在不同父母的网页上的任何地方?可能在网页上的任何地方。我希望这是一般性的。似乎我想要类似于end()
的东西,但它会选择以前过滤掉的元素。一种.invert_last()
选择器。我在文档中看不到任何类似的内容。重复的语法确实让它变得有些复杂。例如,我现在似乎有这样一个相当不可维护的链(我在一个有时隐藏的框中显示所选文本):$('.closeable').not(#boxContainer,#aboutBox.hide().end().filter('#boxContainer,#aboutBox').show().find('.hiddeble').not('.#htmlext how').hide().end().filter('htmlext how').show'));代码>