jquery:visible和:hidden选择器有点误导,它们选择消耗文档中空间的元素,因此具有可见性的东西:hidden被归类为:可见即使它不是o_O
我需要能够只选择以下元素:真实可见,我可以用眼睛看到,例如,不透明度:0或可见性:隐藏
显然,对于一个元素在视觉上可见所有它的祖先也必须是可见的所以我假设一个递归的查找树是必要的.
这太贵了吗?
谁能建议一种可靠有效的方法来实现这一目标?
最佳答案
怎么样:
原文链接:https://www.f2er.com/jquery/428218.html$.expr[':'].reallyVisible = function(node,idx){
while(true){
// should be faster than $(node).css()
var css = document.defaultView.getComputedStyle(node,null);
if(css.opacity == 0 || css.visibility == 'hidden')
return false;
node = node.parentNode;
if(!node || node === document)
break;
}
return true;
}