Как я могу скопировать getElementsBy YUI с использованием Prototype? - PullRequest
0 голосов
/ 22 марта 2010

Я перемещаю некоторый код из YUI в javascript, а часть использует YAHOO.util.Dom.getElementsBy (функцию) YUI. Я читал документы по прототипам API и не смог найти что-то эквивалентное. Он должен иметь возможность принимать произвольную функцию, а не просто выбирать селектор CSS или тому подобное. Кто-нибудь может предложить мне лучший способ сделать это в Prototype?

Ответы [ 2 ]

0 голосов
/ 22 марта 2010

Функция Джека Слайта из http://www.codingforums.com/showthread.php?t=83993, основанная на getElementsByClassName, которая выполняет то, что мне нужно, и легко расширяется для получения произвольной функции:

document.getElementsByAttribute = function(attribute, value, tagName, parentElement) {
    var children = ($(parentElement) || document.body).getElementsByTagName((tagName || '*'));
    return $A(children).inject([], function(elements, child) {
        var attributeValue = child.getAttribute(attribute);
        if(attributeValue != null) {
            if(!value || attributeValue == value) {
                elements.push(child);
            }
        }
        return elements;
    });
}
0 голосов
/ 22 марта 2010

Вы можете использовать функцию доллар-доллар и функцию фильтра:

var elts = $$("div.big").filter(myFunction);
...