[英]How to check if an Element with a certain Classname is visible?
我想检查是否有任何具有 Classname settingsBox
的元素可见。 我创建了这个 function,但它不起作用:
function noOptionsOpen(){
$(".settingsBox").each(function (){
if ($(this).is(":visible")) return false;
})
return true;
}
我猜,如果这个类名有任何可见的东西,内部 Function 会返回 fals,但是在跳出它之后,它仍然总是返回 true,对吧? 我只是不知道我该如何解决?
问题是因为您无法从 each() 中的匿名处理程序 function 中的noOptionsOpen()
each()
返回。 解决这个问题的一种方法是定义一个变量并在循环中更新它,然后返回它:
function noOptionsOpen() {
let optionsOpen = true;
$(".settingsBox").each(function() {
if ($(this).is(":visible"))
optionsOpen = false;
})
return optionsOpen;
}
更好的方法是在单个选择器中使用:visible
并检查length
属性。 这几乎使 function 变得多余,但取决于您的用例:
function noOptionsOpen() {
return $(".settingsBox:visible").length === 0;
}
// As above in ES6:
let noOptionsOpen = () => $(".settingsBox:visible").length === 0;
那?
const isHidden = el => (window.getComputedStyle(el).getPropertyValue('visibility')==='hidden'), noOptionsOpen = classN => [...document.querySelectorAll(`.${classN}`)].some(isHidden); console.log( 'some elements are not visible? -> ', noOptionsOpen('settingsBox') )
#parent >div:nth-of-type(3) { visibility: hidden; }
<div id="parent"> <div class="settingsBox">aa</div> <div class="settingsBox">bb</div> <div class="settingsBox">cc</div> <div class="settingsBox">dd</div> <div class="settingsBox">ee</div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.