javascript - 如何检查具有特定类名的元素是否可见?

标签 javascript html jquery css

我想检查是否有任何具有类名 settingsBox 的元素可见。 我创建了这个函数,但它不起作用:

function noOptionsOpen(){
    $(".settingsBox").each(function (){
        if ($(this).is(":visible")) return false;
    })
    return true;
}

我猜,如果该类名有任何可见内容,内部函数将返回 fals,但跳出它后,它仍然总是返回 true,对吧?我只是不知道如何解决这个问题?

最佳答案

问题是因为您无法从 each() 中匿名处理函数内的 noOptionsOpen() 函数返回。解决这个问题的一种方法是定义一个变量并在返回它之前在循环中更新它:

function noOptionsOpen() {
  let optionsOpen = true;
  $(".settingsBox").each(function() {
    if ($(this).is(":visible")) 
      optionsOpen = false;
  })
  return optionsOpen;
}

更好的方法是在单个选择器中使用 :visible 并检查 length 属性。这几乎使该功能变得多余,但这取决于您的用例:

function noOptionsOpen() {
  return $(".settingsBox:visible").length === 0;
}

// As above in ES6:
let noOptionsOpen = () => $(".settingsBox:visible").length === 0;

关于javascript - 如何检查具有特定类名的元素是否可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67506036/

相关文章:

javascript - Node Mocha Chai Async - 即使它应该失败,一切都会通过

javascript - 在固定的标题位置向下滚动时淡出内容

javascript - 如何使用 jQuery 和 Asp.Net MVC 3 实现提供额外动态生成字段的客户端注册表单?

jquery - 如何以编程方式触发带有内联 div 的 fancybox?

javascript - 如何使用 jquery 查找多选标签的最新选定项目?

php - Laravel4 : The requested resource/admin was not found on this server

Jquery 鼠标悬停在 div slideUp 上,鼠标移出 div slideDown

javascript - 单击按钮时 JQuery 追加

jquery - 在导航中创建事件菜单点

javascript - 如何使用位掩码在 JavaScript 中存储 bool 值