如何使用Prototype复制YUI的getElementsBy?

时间:2010-03-22 18:17:31

标签: javascript prototypejs yui

我正在将一些代码从YUI移动到javascript,其中一些代码正在使用YUI的YAHOO.util.Dom.getElementsBy(函数)。我一直在阅读原型API文档并且无法找到相同的东西。它需要能够采取任意功能,而不仅仅是选择关闭CSS选择器等。任何人都可以向我建议在Prototype中实现这一目标的最佳方法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用美元 - 美元函数和过滤器函数:

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

答案 1 :(得分:0)

来自http://www.codingforums.com/showthread.php?t=83993的Jack Sleight基于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;
    });
}