📄 element-beta.js
字号:
}, /** * Wrapper for Dom method. * @method removeClass * @param {String} className The className to remove */ removeClass: function(className) { return Dom.removeClass(this.get('element'), className); }, /** * Wrapper for Dom method. * @method replaceClass * @param {String} oldClassName The className to replace * @param {String} newClassName The className to add */ replaceClass: function(oldClassName, newClassName) { return Dom.replaceClass(this.get('element'), oldClassName, newClassName); }, /** * Wrapper for Dom method. * @method setStyle * @param {String} property The style property to set * @param {String} value The value to apply to the style property */ setStyle: function(property, value) { var el = this.get('element'); if (!el) { return this._queue[this._queue.length] = ['setStyle', arguments]; } return Dom.setStyle(el, property, value); // TODO: always queuing? }, /** * Wrapper for Dom method. * @method getStyle * @param {String} property The style property to retrieve * @return {String} The current value of the property */ getStyle: function(property) { return Dom.getStyle(this.get('element'), property); }, /** * Apply any queued set calls. * @method fireQueue */ fireQueue: function() { var queue = this._queue; for (var i = 0, len = queue.length; i < len; ++i) { this[queue[i][0]].apply(this, queue[i][1]); } }, /** * Appends the HTMLElement into either the supplied parentNode. * @method appendTo * @param {HTMLElement | Element} parentNode The node to append to * @param {HTMLElement | Element} before An optional node to insert before * @return {HTMLElement} The appended DOM element. */ appendTo: function(parent, before) { parent = (parent.get) ? parent.get('element') : Dom.get(parent); this.fireEvent('beforeAppendTo', { type: 'beforeAppendTo', target: parent }); before = (before && before.get) ? before.get('element') : Dom.get(before); var element = this.get('element'); if (!element) { return false; } if (!parent) { return false; } if (element.parent != parent) { if (before) { parent.insertBefore(element, before); } else { parent.appendChild(element); } } this.fireEvent('appendTo', { type: 'appendTo', target: parent }); return element; }, get: function(key) { var configs = this._configs || {}; var el = configs.element; // avoid loop due to 'element' if (el && !configs[key] && !YAHOO.lang.isUndefined(el.value[key]) ) { return el.value[key]; } return AttributeProvider.prototype.get.call(this, key); }, setAttributes: function(map, silent){ var el = this.get('element'); for (var key in map) { // need to configure if setting unconfigured HTMLElement attribute if ( !this._configs[key] && !YAHOO.lang.isUndefined(el[key]) ) { this.setAttributeConfig(key); } } // set based on configOrder for (var i = 0, len = this._configOrder.length; i < len; ++i) { if (map[this._configOrder[i]] !== undefined) { this.set(this._configOrder[i], map[this._configOrder[i]], silent); } } }, set: function(key, value, silent) { var el = this.get('element'); if (!el) { this._queue[this._queue.length] = ['set', arguments]; if (this._configs[key]) { this._configs[key].value = value; // so "get" works while queueing } return; } // set it on the element if not configured and is an HTML attribute if ( !this._configs[key] && !YAHOO.lang.isUndefined(el[key]) ) { _registerHTMLAttr.call(this, key); } return AttributeProvider.prototype.set.apply(this, arguments); }, setAttributeConfig: function(key, map, init) { var el = this.get('element'); if (el && !this._configs[key] && !YAHOO.lang.isUndefined(el[key]) ) { _registerHTMLAttr.call(this, key, map); } else { AttributeProvider.prototype.setAttributeConfig.apply(this, arguments); } this._configOrder.push(key); }, getAttributeKeys: function() { var el = this.get('element'); var keys = AttributeProvider.prototype.getAttributeKeys.call(this); //add any unconfigured element keys for (var key in el) { if (!this._configs[key]) { keys[key] = keys[key] || el[key]; } } return keys; }, createEvent: function(type, scope) { this._events[type] = true; AttributeProvider.prototype.createEvent.apply(this, arguments); }, init: function(el, attr) { _initElement.apply(this, arguments); }};var _initElement = function(el, attr) { this._queue = this._queue || []; this._events = this._events || {}; this._configs = this._configs || {}; this._configOrder = []; attr = attr || {}; attr.element = attr.element || el || null; this.DOM_EVENTS = { 'click': true, 'dblclick': true, 'keydown': true, 'keypress': true, 'keyup': true, 'mousedown': true, 'mousemove': true, 'mouseout': true, 'mouseover': true, 'mouseup': true, 'focus': true, 'blur': true, 'submit': true }; var isReady = false; // to determine when to init HTMLElement and content if (typeof attr.element === 'string') { // register ID for get() access _registerHTMLAttr.call(this, 'id', { value: attr.element }); } if (Dom.get(attr.element)) { isReady = true; _initHTMLElement.call(this, attr); _initContent.call(this, attr); } YAHOO.util.Event.onAvailable(attr.element, function() { if (!isReady) { // otherwise already done _initHTMLElement.call(this, attr); } this.fireEvent('available', { type: 'available', target: Dom.get(attr.element) }); }, this, true); YAHOO.util.Event.onContentReady(attr.element, function() { if (!isReady) { // otherwise already done _initContent.call(this, attr); } this.fireEvent('contentReady', { type: 'contentReady', target: Dom.get(attr.element) }); }, this, true);};var _initHTMLElement = function(attr) { /** * The HTMLElement the Element instance refers to. * @attribute element * @type HTMLElement */ this.setAttributeConfig('element', { value: Dom.get(attr.element), readOnly: true });};var _initContent = function(attr) { this.initAttributes(attr); this.setAttributes(attr, true); this.fireQueue();};/** * Sets the value of the property and fires beforeChange and change events. * @private * @method _registerHTMLAttr * @param {YAHOO.util.Element} element The Element instance to * register the config to. * @param {String} key The name of the config to register * @param {Object} map A key-value map of the config's params */var _registerHTMLAttr = function(key, map) { var el = this.get('element'); map = map || {}; map.name = key; map.method = map.method || function(value) { if (el) { el[key] = value; } }; map.value = map.value || el[key]; this._configs[key] = new YAHOO.util.Attribute(map, this);};/** * Fires when the Element's HTMLElement can be retrieved by Id. * <p>See: <a href="#addListener">Element.addListener</a></p> * <p><strong>Event fields:</strong><br> * <code><String> type</code> available<br> * <code><HTMLElement> * target</code> the HTMLElement bound to this Element instance<br> * <p><strong>Usage:</strong><br> * <code>var handler = function(e) {var target = e.target};<br> * myTabs.addListener('available', handler);</code></p> * @event available */ /** * Fires when the Element's HTMLElement subtree is rendered. * <p>See: <a href="#addListener">Element.addListener</a></p> * <p><strong>Event fields:</strong><br> * <code><String> type</code> contentReady<br> * <code><HTMLElement> * target</code> the HTMLElement bound to this Element instance<br> * <p><strong>Usage:</strong><br> * <code>var handler = function(e) {var target = e.target};<br> * myTabs.addListener('contentReady', handler);</code></p> * @event contentReady *//** * Fires before the Element is appended to another Element. * <p>See: <a href="#addListener">Element.addListener</a></p> * <p><strong>Event fields:</strong><br> * <code><String> type</code> beforeAppendTo<br> * <code><HTMLElement/Element> * target</code> the HTMLElement/Element being appended to * <p><strong>Usage:</strong><br> * <code>var handler = function(e) {var target = e.target};<br> * myTabs.addListener('beforeAppendTo', handler);</code></p> * @event beforeAppendTo *//** * Fires after the Element is appended to another Element. * <p>See: <a href="#addListener">Element.addListener</a></p> * <p><strong>Event fields:</strong><br> * <code><String> type</code> appendTo<br> * <code><HTMLElement/Element> * target</code> the HTMLElement/Element being appended to * <p><strong>Usage:</strong><br> * <code>var handler = function(e) {var target = e.target};<br> * myTabs.addListener('appendTo', handler);</code></p> * @event appendTo */YAHOO.augment(YAHOO.util.Element, AttributeProvider);})();YAHOO.register("element", YAHOO.util.Element, {version: "2.6.0", build: "1321"});
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -