Предоставляет ли mootools способ fade () для всех элементов, кроме одного? - PullRequest
3 голосов
/ 12 октября 2010

Mootools может скрывать все узлы, соответствующие селектору, как это:

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

Мне нужен способ пропустить определенный узел.В jQuery-мире я бы использовал not (), и это было бы что-то вроде этого:

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

Но я не могу найти способ продемонстрировать подобное поведение в mootools.Кто-нибудь что-нибудь знает?

Ответы [ 2 ]

6 голосов
/ 12 октября 2010

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

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

5 голосов
/ 12 октября 2010

использование .filter в коллекции html элементов будет иметь тот же эффект, при условии, что 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...