Javascript 从jQuery对象集合中获取可见信息

Javascript 从jQuery对象集合中获取可见信息,javascript,jquery,Javascript,Jquery,我有一行代码: var filterInputs = $(this).siblings('.filterInputs'); 它对filterInputs执行一些操作。稍后,我想将我收集的FilterInput减少到那些可见的 显然,我可以这样做: var visibleFilterInputs = $(this).siblings('.filterInputs:visible'); 但这似乎效率低下,因为我已经参考了我希望减少的收藏 有没有这样的说法: //TODO: Example var

我有一行代码:

var filterInputs = $(this).siblings('.filterInputs');
它对filterInputs执行一些操作。稍后,我想将我收集的FilterInput减少到那些可见的

显然,我可以这样做:

var visibleFilterInputs = $(this).siblings('.filterInputs:visible');
但这似乎效率低下,因为我已经参考了我希望减少的收藏

有没有这样的说法:

//TODO: Example
var visibleFilterInputs = $(filterInputs:visible);
var visibleFilterInputs = filterInputs.filter("div:visible");

不必再次迭代DOM树?谢谢

你完全正确,没有理由回忆DOM元素,因为jQuery对象中已经有它们了。这正是
.filter()
方法的作用:

试试这个:

var visibleFilterInputs = filterInputs.filter(":visible");
下面是一个例子:

请注意,最好针对特定的HTML标记,例如
,以使
:可见的
选择器更有效一些(因为它不是CSS规范的一部分,无法通过本机方法进行优化)。至少在您的情况下,您已经在使用
filterInputs
类。不管怎样,可能是这样的:

//TODO: Example
var visibleFilterInputs = $(filterInputs:visible);
var visibleFilterInputs = filterInputs.filter("div:visible");
但是只有在适用的情况下才能。我的意思是,即使选择多个已知元素标记也可能更好:

var visibleFilterInputs = filterInputs.filter("div:visible, p:visible");