# Yahoo! UI Library

### node 3.0.0b1

Yahoo! UI Library > node > node-imports.js (source view)
Search:
Filters Show Private Show Protected Show Deprecated

    Y.Array.each([
        /**
         * Passes through to DOM method.
         * @method replaceChild
         * @for Node
         * @param {HTMLElement | Node} node Node to be inserted
         * @param {HTMLElement | Node} refNode Node to be replaced
         * @return {Node} The replaced node
         */
        'replaceChild',

        /**
         * Passes through to DOM method.
         * @method appendChild
         * @param {HTMLElement | Node} node Node to be appended
         * @return {Node} The appended node
         */
        'appendChild',

        /**
         * Passes through to DOM method.
         * @method insertBefore
         * @param {HTMLElement | Node} newNode Node to be appended
         * @param {HTMLElement | Node} refNode Node to be inserted before
         * @return {Node} The inserted node
         */
        'insertBefore',

        /**
         * Passes through to DOM method.
         * @method removeChild
         * @param {HTMLElement | Node} node Node to be removed
         * @return {Node} The removed node
         */
        'removeChild',

        /**
         * Passes through to DOM method.
         * @method hasChildNodes
         * @return {Boolean} Whether or not the node has any childNodes
         */
        'hasChildNodes',

        /**
         * Passes through to DOM method.
         * @method cloneNode
         * @param {HTMLElement | Node} node Node to be cloned
         * @return {Node} The clone
         */
        'cloneNode',

        /**
         * Passes through to DOM method.
         * @method hasAttribute
         * @param {String} attribute The attribute to test for
         * @return {Boolean} Whether or not the attribute is present
         */
        'hasAttribute',

        /**
         * Passes through to DOM method.
         * @method removeAttribute
         * @param {String} attribute The attribute to be removed
         * @chainable
         */
        'removeAttribute',

        /**
         * Passes through to DOM method.
         * @method scrollIntoView
         * @chainable
         */
        'scrollIntoView',

        /**
         * Passes through to DOM method.
         * @method getElementsByTagName
         * @param {String} tagName The tagName to collect
         * @return {NodeList} A NodeList representing the HTMLCollection
         */
        'getElementsByTagName',

        /**
         * Passes through to DOM method.
         * @method focus
         * @chainable
         */
        'focus',

        /**
         * Passes through to DOM method.
         * @method blur
         * @chainable
         */
        'blur',

        /**
         * Passes through to DOM method.
         * Only valid on FORM elements
         * @method submit
         * @chainable
         */
        'submit',

        /**
         * Passes through to DOM method.
         * Only valid on FORM elements
         * @method reset
         * @chainable
         */
        'reset',

        /**
         * Passes through to DOM method.
         * @method select
         * @chainable
         */
         'select'
    ], function(method) {
        Y.Node.prototype[method] = function(arg1, arg2, arg3) {
            var ret = this.invoke(method, arg1, arg2, arg3);
            return ret;
        };
    });

    Node.importMethod(Y.DOM, [
        /**
         * Determines whether the ndoe is an ancestor of another HTML element in the DOM hierarchy.
         * @method contains
         * @param {Node | HTMLElement} needle The possible node or descendent
         * @return {Boolean} Whether or not this node is the needle its ancestor
         */
        'contains',
        /**
         * Allows setting attributes on DOM nodes, normalizing in some cases.
         * This passes through to the DOM node, allowing for custom attributes.
         * @method setAttribute
         * @for Node
         * @for NodeList
         * @chainable
         * @param {string} name The attribute name
         * @param {string} value The value to set
         */
        'setAttribute',
        /**
         * Allows getting attributes on DOM nodes, normalizing in some cases.
         * This passes through to the DOM node, allowing for custom attributes.
         * @method getAttribute
         * @for Node
         * @for NodeList
         * @param {string} name The attribute name
         * @return {string} The attribute value
         */
        'getAttribute'
    ]);

    if (!document.documentElement.hasAttribute) { // IE < 8
        Y.Node.prototype.hasAttribute = function(attr) {
            return Y.DOM.getAttribute(Y.Node.getDOMNode(this), attr) !== '';
        };
    }

    /**
     * Allows setting attributes on DOM nodes, normalizing in some cases.
     * This passes through to the DOM node, allowing for custom attributes.
     * @method setAttribute
     * @see Node
     * @for NodeList
     * @chainable
     * @param {string} name The attribute name
     * @param {string} value The value to set
     */

    /**
     * Allows getting attributes on DOM nodes, normalizing in some cases.
     * This passes through to the DOM node, allowing for custom attributes.
     * @method getAttribute
     * @see Node
     * @for NodeList
     * @param {string} name The attribute name
     * @return {string} The attribute value
     */
    Y.NodeList.importMethod(Y.Node.prototype, ['getAttribute', 'setAttribute']);

    (function() { // IE clones expandos; regenerate UID
        var node = document.createElement('div'),
            UID = '_yuid';

        Y.stamp(node);
        if (node[UID] === node.cloneNode(true)[UID]) {
            Y.Node.prototype.cloneNode = function(deep) {
                var node = Y.Node.getDOMNode(this).cloneNode(deep);
                node[UID] = Y.guid();
                return Y.get(node);
            };
        }
    })();

Copyright © 2009 Yahoo! Inc. All rights reserved.