mootools提供了一种方法来淡化()除了一个元素之外的所有元素吗?

时间:2010-10-12 05:17:45

标签: javascript mootools

Mootools可以淡化与选择器匹配的所有节点,如下所示:

$$('#div img').fade(0.3);

我需要一种跳过特定节点的方法。在jQuery-world中,我会使用not(),它会是这样的:

$$('#div img').not( oneElement ).fade(0.3);

但我找不到任何方式在mootools中表现出类似的行为。任何人都知道吗?

2 个答案:

答案 0 :(得分:6)

$$('#div img').erase(oneElement).fade(0.3);

http://www.jsfiddle.net/timwienk/Z9MNe/2/

答案 1 :(得分:5)

在html元素集合上使用.filter将具有相同的效果,前提是oneElement是一个合适的对象:

$$("img").filter(function(el) {
    return el !== oneElement;
}).fade(.3);

展示多功能的mootools,这里是你如何模仿你已经知道的语法:

Array.implement({
    not: function(skipEl) {
        return skipEl ? this.filter(function(el) {
            return el !== skipEl;
        }) : this;
    }
});

var divs = document.getElements("div");
var redDiv = document.getElement("div.red");

divs.not(redDiv).fade(.2);

在此处查看此操作:http://www.jsfiddle.net/dimitar/Z9MNe/

标记:

<div ></div>
<div ></div>
<div ></div>
<div class="red" ></div>
<div ></div>

正如FunFactor在irc上指出的那样,你只能使用选择器来获得你想要的东西:

$$('div.something:not(#someId)')可以使用,但如果您只是在this事件上使用某个对象,例如onClick,则无效。