##// END OF EJS Templates
added journal icon and made active links in journal, fixed edit user bug when given wrong id
added journal icon and made active links in journal, fixed edit user bug when given wrong id

File last commit:

r0:564e4082 default
r476:8ba65e4c celery
Show More
element-delegate-debug.js
141 lines | 4.2 KiB | application/javascript | JavascriptLexer
Marcin Kuzminski
initial commit.
r0 /*
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"});