我想要一個具有固定位置的所有元素的數組。有沒有辦法找到所有使用DOM匹配某種風格的元素?
這是我有這麼遠(MooTools的代碼)
$$('*').filter(function(aEl){ return aEl.getStyle('position')=='fixed' });
有沒有更直接的方式來做到這一點?
我想要一個具有固定位置的所有元素的數組。有沒有辦法找到所有使用DOM匹配某種風格的元素?
這是我有這麼遠(MooTools的代碼)
$$('*').filter(function(aEl){ return aEl.getStyle('position')=='fixed' });
有沒有更直接的方式來做到這一點?
不真的,你發佈的是最好的方式。
但如果它是你更經常地做一些事情,我會考慮它抽象爲僞選擇:
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"));
附:這將在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)"));
我會建議你做一個CSS類
.fixed_pos
{
position: fixed;
}
此類應用到你想要的元素,然後
$$(".fixed_pos");
這將會給你所有的元素
這是真實的,但對我來說,我與未知CSS和HTML工作,所以我不能依靠這樣一類的存在。 (我的代碼是一個將被注入頁面的小部件。) – GoalBased 2010-07-15 20:02:42
哇! (yadayada) – knittl 2010-07-15 09:05:39
感謝您讓我參與[Slick - 官方Mootools項目](http://github.com/mootools/slick「Mootool在GitHub上的Slick」) – GoalBased 2010-07-16 06:13:03