Mercurial > kallithea
view pylons_app/public/js/yui/element-delegate/element-delegate-debug.js @ 172:83c7ee1b5f5c
improved timerproxy with sqllogging, and new way of sqlformat queries
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 21 May 2010 03:01:31 +0200 |
parents | 564e40829f80 |
children |
line wrap: on
line source
/* Copyright (c) 2009, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt version: 2.8.0r4 */ /** * Augments the Element Utility with a <code>delegate</code> method that * facilitates easy creation of delegated event listeners. (Note: Using CSS * selectors as the filtering criteria for delegated event listeners requires * inclusion of the Selector Utility.) * * @module element-delegate * @title Element Event Delegation Module * @namespace YAHOO.util * @requires element, event-delegate */ (function () { var Event = YAHOO.util.Event, delegates = [], specialTypes = { mouseenter: true, mouseleave: true }; YAHOO.lang.augmentObject(YAHOO.util.Element.prototype, { /** * Appends a delegated event listener. Delegated event listeners * receive two arguments by default: the DOM event and the element * specified by the filtering function or CSS selector. * (Note: Using the delegate method requires the element-delegate * module. Using CSS selectors as the filtering criteria for delegated * event listeners requires inclusion of the Selector Utility.) * @method delegate * @param {String} type The name of the event to listen for * @param {Function} fn The handler to call when the event fires * @param {Function|string} filter Function or CSS selector used to * determine for what element(s) the event listener should be called. * When a function is specified, the function should return an * HTML element. Using a CSS Selector requires the inclusion of the * CSS Selector Utility. * @param {Any} obj A variable to pass to the handler * @param {Object} scope The object to use for the scope of the handler * @return {boolean} Returns true if the delegated event listener * was added successfully * @for Element */ delegate: function (type, fn, filter, obj, overrideContext) { if (YAHOO.lang.isString(filter) && !YAHOO.util.Selector) { YAHOO.log("Using a CSS selector to define the filtering criteria for a delegated listener requires the Selector Utility.", "error", "Element"); return false; } if (!Event._createDelegate) { YAHOO.log("Using delegate functionality requires the event-delegate module.", "error", "Element"); return false; } var sType = Event._getType(type), el = this.get("element"), fnDelegate, fnMouseDelegate, fnWrapper = function (e) { return fnDelegate.call(el, e); }; if (specialTypes[type]) { if (!Event._createMouseDelegate) { YAHOO.log("Delegating a " + type + " event requires the event-mouseleave module.", "error", "Element"); return false; } fnMouseDelegate = Event._createMouseDelegate(fn, obj, overrideContext); fnDelegate = Event._createDelegate(function (event, matchedEl, container) { return fnMouseDelegate.call(matchedEl, event, container); }, filter, obj, overrideContext); } else { fnDelegate = Event._createDelegate(fn, filter, obj, overrideContext); } delegates.push([el, sType, fn, fnWrapper]); return this.on(sType, fnWrapper); }, /** * Remove a delegated event listener * @method removeDelegate * @param {String} type The name of the event to listen for * @param {Function} fn The function call when the event fires * @return {boolean} Returns true if the unbind was successful, false * otherwise. * @for Element */ removeDelegate: function (type, fn) { var sType = Event._getType(type), index = Event._getCacheIndex(delegates, this.get("element"), sType, fn), returnVal, cacheItem; if (index >= 0) { cacheItem = delegates[index]; } if (cacheItem) { returnVal = this.removeListener(cacheItem[1], cacheItem[3]); if (returnVal) { delete delegates[index][2]; delete delegates[index][3]; delegates.splice(index, 1); } } return returnVal; } }); }()); YAHOO.register("element-delegate", YAHOO.util.Element, {version: "2.8.0r4", build: "2449"});