#

API Docs for: 3.10.3
Show: Inherited Protected Private Deprecated

# File: node/js/node-attrs.js

    /**
     * @module node
     * @submodule node-base
     */

    var Y_Node = Y.Node,
        Y_DOM = Y.DOM;

    /**
     * Static collection of configuration attributes for special handling
     * @property ATTRS
     * @static
     * @type object
     */
    Y_Node.ATTRS = {
        /**
         * Allows for getting and setting the text of an element.
         * Formatting is preserved and special characters are treated literally.
         * @config text
         * @type String
         */
        text: {
            getter: function() {
                return Y_DOM.getText(this._node);
            },

            setter: function(content) {
                Y_DOM.setText(this._node, content);
                return content;
            }
        },

        /**
         * Allows for getting and setting the text of an element.
         * Formatting is preserved and special characters are treated literally.
         * @config for
         * @type String
         */
        'for': {
            getter: function() {
                return Y_DOM.getAttribute(this._node, 'for');
            },

            setter: function(val) {
                Y_DOM.setAttribute(this._node, 'for', val);
                return val;
            }
        },

        'options': {
            getter: function() {
                return this._node.getElementsByTagName('option');
            }
        },

        /**
         * Returns a NodeList instance of all HTMLElement children.
         * @readOnly
         * @config children
         * @type NodeList
         */
        'children': {
            getter: function() {
                var node = this._node,
                    children = node.children,
                    childNodes, i, len;

                if (!children) {
                    childNodes = node.childNodes;
                    children = [];

                    for (i = 0, len = childNodes.length; i < len; ++i) {
                        if (childNodes[i].tagName) {
                            children[children.length] = childNodes[i];
                        }
                    }
                }
                return Y.all(children);
            }
        },

        value: {
            getter: function() {
                return Y_DOM.getValue(this._node);
            },

            setter: function(val) {
                Y_DOM.setValue(this._node, val);
                return val;
            }
        }
    };

    Y.Node.importMethod(Y.DOM, [
        /**
         * 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'

    ]);