这似乎应该相当容易 - 但我找不到合适的选择器
根据文档(http://api.jquery.com/hidden-selector/和http://api.jquery.com/visible-selector/)...
元素可被视为隐藏,原因如下:
隐藏了一个祖先元素,因此该元素不会显示在页面上.
我想要检测的是"这个元素是可见的,但包含在隐藏的父元素中".即,如果我使父母可见,这个元素也将是可见的.
有没有办法使用JavaScript选择具有给定样式的所有元素?
例如,我希望页面上所有绝对定位的元素.
我认为通过显式声明样式的样式更容易找到元素:
我是否仅限于这些规则?当这些规则适用时,有更好的方法吗?
我很乐意使用选择器引擎,如果这是由一个提供(理想情况下Slick - Mootools 1.3)
编辑:
我想出了一个只适用于上述规则的解决方案.
它的工作原理是循环遍历每个样式规则,然后选择页面.
任何人都可以告诉我,循环所有元素是否更好(如所有解决方案中所推荐).
我知道在IE中我必须将样式更改为小写,但我可以使用cssText一次解析所有样式.为了简单起见,将其留下.
寻找最佳实践.
var classes = '';
Array.each(documents.stylesheets, function(sheet){
Array.each(sheet.rules || sheet.cssRules, function(rule){
if (rule.style.position == 'fixed') classes += rule.selectorText + ',';
});
});
var styleEls = $$(classes).combine($$('[style*=fixed]'));
Run Code Online (Sandbox Code Playgroud)