Javascript 筛选出具有CSS样式显示的JQuery元素:无

Javascript 筛选出具有CSS样式显示的JQuery元素:无,javascript,jquery,Javascript,Jquery,选择器为我生成了一组元素。在这组元素中,我有1到2个具有CSS属性display:none的元素。我必须删除这些元素,并获得有显示的元素。如何使用JQuery实现这一点?您可以使用 您可以使用.filter() 这将从选择器返回属性display不是none的所有元素,并删除那些是的元素 $("selector").is(":visible") 您还可以过滤掉原始选择器中的隐藏元素: $("selector:visible") 我目前正在使用它来处理在display:none和display

选择器为我生成了一组元素。在这组元素中,我有1到2个具有CSS属性display:none的元素。我必须删除这些元素,并获得有显示的元素。如何使用JQuery实现这一点?

您可以使用

您可以使用
.filter()

这将从选择器返回属性
display
不是
none
的所有元素,并删除那些是的元素

$("selector").is(":visible")
您还可以过滤掉原始选择器中的隐藏元素:

$("selector:visible")

我目前正在使用它来处理在
display:none
display:block
之间切换的元素;为了这个目的使用它会有任何问题或不一致吗?@Abdul,应该没问题。jQuery同时检查
显示
可见性
属性,以检查元素是否可见。虽然这通常可以达到目标,但有一个显著的区别(除了@Barmar提到的它还检查可见性之外):它还将检查父元素的可见性。因此,如果您确实想使用
display:none
过滤掉元素,那么
visible
将给出误报。我还发现:visible如果在设置可见性的同一脚本中运行,则返回错误的结果。例如:
{$(“#el”).show();if($(“#el:visible”).length==0)console.log(“这仍然是空的”);}
但是
{$(“#el”).show();setTimeout(function(){if($(“#el:visible”).length>0)console.log(“现在它找到了”)},0)}
我想在这里提一下,因为我花了很长时间才弄明白!请注意,这只会在其
样式
属性中查找具有显式
显示:无
的元素。
.css()
方法不会拾取从样式表继承的样式。您为什么这么说?根据jQuery文档,
.css()
是计算样式属性,因此它确实包含继承的样式。这里有一个演示来证明这是真的——我可以发誓,我以前见过一些问题,其中没有使用计算风格。也许我在考虑使用普通JS
element.style.display
的代码。
$("selector").is(":visible")
$("selector:visible")