有没有办法使用DOM查找与某个样式匹配的所有元素?

时间:2010-07-15 05:46:22

标签: javascript dom mootools

我想要一个具有固定位置的所有元素的数组。

这是我到目前为止所获得的(mootools代码)

$$('*').filter(function(aEl){ return aEl.getStyle('position')=='fixed' });

有更直接的方法吗?

2 个答案:

答案 0 :(得分:4)

不是真的,你发布的是最好的方式。

但如果你经常这样做,我会考虑将它抽象为伪选择器:

Selectors.Pseudo.fixed = function(){
    return this.getStyle("position") == "fixed";
};

// can now use it as a part of a normal selector:
console.log(document.getElements("div:fixed"));

P.S。这将在mootools 1.3中打破,因为光滑使用不同的选择器引擎。

使其在1.3中工作:

Slick.definePseudo('fixed',function() {
    return this.getStyle("position") == "fixed";
});

最后,为了使它更通用,你可以查找任何CSS属性作为选择器的一部分,你可以这样做:

Selectors.Pseudo.style = function(key) {
    var styles = key.split("=");
    return styles.length == 2 && this.getStyle(styles[0]) == styles[1];
};

和mootools 1.3:

Slick.definePseudo('style', function(key) {
    var styles = key.split("=");
    return styles.length == 2 && this.getStyle(styles[0]) == styles[1];
});

如何使用它:

console.log(document.getElements("div:style(position=fixed)"));

http://www.jsfiddle.net/h7JPS/3/

答案 1 :(得分:0)

我建议你做一个css课

.fixed_pos
{
   position: fixed;
}

将此类应用于您想要的元素,然后

$$(".fixed_pos");

这将为您提供所有元素