javascript - 查询 :visible selector does not give proper output

标签 javascript jquery html

我试图找到第一个“可见的”li ,在下面的代码中这将是 li2-2 .

但出于某种原因.children('li:visible').attr()给我第一个<li>来自 <ul> .

我该如何解决这个问题?

alert($("#myul").children('li:visible').attr("id"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body class="descendants">body (great-grandparent)
  <div style="width:500px;">div (grandparent)
    <ul id="myul">ul (direct parent)  
      <li style="visibility:hidden;" id="li1-1">li (child)
        <span>span (grandchild)</span>
      </li>
      <li style="visibility:visible;" id="li2-2">li (child)
        <span>span (grandchild)</span>
      </li>
      <li style="visibility:hidden;" id="li3-3">li (child)
        <span>span (grandchild)</span>
      </li>
      <li style="visibility:visible;" id="li4-4">li (child)
        <span>span (grandchild)</span>
      </li>
    </ul>   
  </div>
</body>

最佳答案

As mentioned in jquery doc elements with visibility: hidden or opacity: 0 are considered visible.

这会导致您的代码选择所有 li

你可以使用.filter()来过滤元素有visibility:visible

var id = $("#myul").children('li').filter(function(){
  return $(this).css("visibility") == "visible"
}).first().attr("id");
console.log(id);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style="width:500px;">div (grandparent)
  <ul id="myul">ul (direct parent)  
    <li style="visibility:hidden;" id="li1-1">li (child)
      <span>span (grandchild)</span>
    </li>
    <li style="visibility:visible;" id="li2-2">li (child)
      <span>span (grandchild)</span>
    </li>
    <li style="visibility:hidden;" id="li3-3">li (child)
      <span>span (grandchild)</span>
    </li>
    <li style="visibility:visible;" id="li4-4">li (child)
      <span>span (grandchild)</span>
    </li>
  </ul>   
</div>

关于javascript - 查询 :visible selector does not give proper output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52604758/

相关文章:

javascript - 鼠标悬停时的 SVG map 工具提示,可以单击

javascript - JQuery 数据表日期顺序

jquery - 当鼠标位于容器外部时,谷歌日历如何实现滚动?

javascript - 如何根据元素的位置设置准确的背景位置?

javascript - 避免复杂的 if 语句

javascript - Vue JS 中的图片路径

javascript - 调用所有输入但排除功能的提交按钮

javascript - 选择显示区域图像的示例代码

html - 输入行高使输入在 IE 上可滚动

javascript - 如何配置 TinyMCE 以允许 block 级元素位于 anchor 标记内?