jquery :visible筛选

请问下jquery不能够多级筛选吗?

<ul>
  <li>
    <select></select>
  </li>
</ul>

比如我想筛选ul下可见的select标签,但是我只控制了ul的显示隐藏
用$('ul:visible select') 或者 $('ul select:visible')都取的不对
只能用$('ul:visible').find('select')来获取吗?

阅读 1.8k
2 个回答

是的。你也可以这样 $('ul li :visible') 选取ul下面的li下面的可见元素

  1. 在浏览器里判定某个元素是否显示其实很麻烦,需要考虑的情况很多,如果加上选择器就更麻烦了
  2. 如果要完全判定,需要耗费大量的系统资源,甚至反复重爬整个 DOM 树
  3. 所以在 v3 之后(包括 v1.12 和 v2.2)之后,开发团队就放弃了完善的 :visible:hidden 实现,只检查目标元素的 display 样式。所以你的问题无法按你的想法实现。
  4. 如果你真的有这方面的需求,可以自己来实现一下,比如先选出所有可见的 ul,然后检查下面所有的 select,最终获得所有可见的 ul select
  5. 参考《jQuery 3.0 beta 发布》最后一段
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题