我正在.highlight
使用这个简单的 jQuery 片段检索“找到”元素的数量(这些元素具有类):
$(".highlight").length
但现在我的问题是某些元素是隐藏的,通过style="display: none;"
现在,如何获得突出显示和显示的元素数量?
就像是:
$(hasClass 'highlight' AND has style 'display: block'). length ?
您可以使用:visible来获取可见的元素。
$(".highlight:visible").length
一种方法是使用:visible
Adil 提到的 jQuery 伪选择器。
一个常见的陷阱是,如果具有 class 的元素.highlight
嵌套到隐藏的容器中,那么即使该元素具有display: block
相反,您可以使用 css 正则表达式,如下所示:
$('.highlight[style*="display: block"]')
一个常见的陷阱是您需要确切地知道规则是如何编写的。如果像这样之前没有空间block
:display:block
而不是display: block
你也无法获得元素。
克服这个问题的一种方法是仅搜索以下block
样式中的术语:
$('.highlight[style*="block"]')
你也可以通过使用css 来查看元素是否有 css display="none"
或display="block"
$(".highlight").each(function(){
if($(this).css("display")=="block"){
//Your code here
}
});
这是纯JS版本:
Array.from(document.querySelectorAll('.one')).filter(s =>
window.getComputedStyle(s).getPropertyValue('display') != 'none'
);
.one
返回具有类名和属性的所有元素display: block
。