2007-05-30

$$('CSS Selector') in Prototype.js

我一般都是用prototype的$('somebody')去取代document.getElementById ('somebody');
但prototype還有一個更炫的功能:$$('cssSelector'),沒錯,裡面寫的真的是CSS Selector

我今天遇到的需求是,要去掃頁面裡的所有div,然後過濾出『同一group』的div,最後調整他們的高度。
本來的想法是,為這群div加上類似的id,像是tripAgg這樣
然後我把所有div掃出來後就可以用indexof去抓我要的div,本來的code是這樣:

$$('div').each(function(obj){
if (obj.id.startsWith('tripAgg')) {
if (obj.getDimensions().height > 60) {
obj.style.height = '60px';
}
}
});

本來是用$$('div')掃出所有div,後來改成這樣$$('div.tripAgg'),因為這群div的class都一樣,所以就可以省過加id跟用id過濾那一段:

$$('div.tripAgg').each(function(obj){
if (obj.getDimensions().height > 60) {
obj.style.height = '60px';
}
});

用這種更精確的方法多少可以改進一些效能,因為前者共掃出六十幾個div,裡面只有八個是我要的,後者就精確的掃出八個div。

沒有留言:

張貼留言