我有一个列表,其中隐藏元素有多种原因,每个原因对应一个css类,即:
<style>
.filteredOut { display: none; }
.somethingElse { display : none; }
...
</style>
我希望通过.filter(':even').addClass('even')
应用交替的css类,但仅适用于可见的类。问题是当发生这种情况时隐藏了父级,因此.filter(':visible')
返回0个元素。我需要像.filter(':visibileEventIfParentIsNot')
此外,每当我调用一个改变列表中可见内容的函数时,我宁愿不必调用函数。这可能是一个白日梦,但有没有办法做到这一点live()
或类似的东西?我愿意接受这个想法。
答案 0 :(得分:1)
对于.filter(':visibileEventIfParentIsNot')
,您可以编写自己的过滤器功能,如下所示:
.filter(function() {
return $(this).css("display") != 'none';
})
请注意,这不包括可见性,只包括传统的jQuery案例,例如.hide()
,它实际上与.css('display', 'none')
相同。
但是,如果你正在进行交替的行样式并突然显示奇数数量的元素,这看起来不正确,我认为你最好做{{1}应用程序在某些内容的可见性发生变化时(可能是.resize()
事件.resize()
plugin?)。
答案 1 :(得分:0)
使用类来控制您的活动。如果要过滤隐藏的元素,请向子项添加必要的类。当它们变得可见时,浏览器将重排css。