annotate rhodecode/public/js/yui/event-delegate/event-delegate-debug.js @ 1073:289ff43cc190 beta

update YUI dev libs to latest version
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 20 Feb 2011 20:58:07 +0100
parents 1e757ac98988
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1 /*
1073
289ff43cc190 update YUI dev libs to latest version
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
2 Copyright (c) 2010, Yahoo! Inc. All rights reserved.
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3 Code licensed under the BSD License:
1073
289ff43cc190 update YUI dev libs to latest version
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
4 http://developer.yahoo.com/yui/license.html
289ff43cc190 update YUI dev libs to latest version
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
5 version: 2.8.2r1
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8 * Augments the Event Utility with a <code>delegate</code> method that
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9 * facilitates easy creation of delegated event listeners. (Note: Using CSS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
10 * selectors as the filtering criteria for delegated event listeners requires
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
11 * inclusion of the Selector Utility.)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
12 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
13 * @module event-delegate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
14 * @title Event Utility Event Delegation Module
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
15 * @namespace YAHOO.util
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
16 * @requires event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
17 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
18
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
19 (function () {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
20
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
21 var Event = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
22 Lang = YAHOO.lang,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
23 delegates = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
24
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
25
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
26 getMatch = function(el, selector, container) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
27
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
28 var returnVal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
29
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
30 if (!el || el === container) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
31 returnVal = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
32 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
33 else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
34 returnVal = YAHOO.util.Selector.test(el, selector) ? el: getMatch(el.parentNode, selector, container);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
35 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
36
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
37 return returnVal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
38
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
39 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
40
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
41
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
42 Lang.augmentObject(Event, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
43
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
44 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
45 * Creates a delegate function used to call event listeners specified
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
46 * via the <code>YAHOO.util.Event.delegate</code> method.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
47 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
48 * @method _createDelegate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
49 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
50 * @param {Function} fn The method (event listener) to call.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
51 * @param {Function|string} filter Function or CSS selector used to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
52 * determine for what element(s) the event listener should be called.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
53 * @param {Object} obj An arbitrary object that will be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
54 * passed as a parameter to the listener.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
55 * @param {Boolean|object} overrideContext If true, the value of the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
56 * obj parameter becomes the execution context
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
57 * of the listener. If an object, this object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
58 * becomes the execution context.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
59 * @return {Function} Function that will call the event listener
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
60 * specified by the <code>YAHOO.util.Event.delegate</code> method.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
61 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
62 * @for Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
63 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
64 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
65 _createDelegate: function (fn, filter, obj, overrideContext) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
66
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
67 return function (event) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
68
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
69 var container = this,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
70 target = Event.getTarget(event),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
71 selector = filter,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
72
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
73 // The user might have specified the document object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
74 // as the delegation container, in which case it is not
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
75 // nessary to scope the provided CSS selector(s) to the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
76 // delegation container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
77 bDocument = (container.nodeType === 9),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
78
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
79 matchedEl,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
80 context,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
81 sID,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
82 sIDSelector;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
83
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
84
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
85 if (Lang.isFunction(filter)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
86 matchedEl = filter(target);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
87 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
88 else if (Lang.isString(filter)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
89
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
90 if (!bDocument) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
91
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
92 sID = container.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
93
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
94 if (!sID) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
95 sID = Event.generateId(container);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
96 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
97
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
98 // Scope all selectors to the container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
99 sIDSelector = ("#" + sID + " ");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
100 selector = (sIDSelector + filter).replace(/,/gi, ("," + sIDSelector));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
101
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
102 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
103
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
104
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
105 if (YAHOO.util.Selector.test(target, selector)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
106 matchedEl = target;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
107 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
108 else if (YAHOO.util.Selector.test(target, ((selector.replace(/,/gi, " *,")) + " *"))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
109
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
110 // The target is a descendant of an element matching
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
111 // the selector, so crawl up to find the ancestor that
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
112 // matches the selector
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
113
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
114 matchedEl = getMatch(target, selector, container);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
115
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
116 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
117
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
118 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
119
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
120
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
121 if (matchedEl) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
122
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
123 // The default context for delegated listeners is the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
124 // element that matched the filter.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
125
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
126 context = matchedEl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
127
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
128 if (overrideContext) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
129 if (overrideContext === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
130 context = obj;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
131 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
132 context = overrideContext;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
133 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
134 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
135
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
136 // Call the listener passing in the container and the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
137 // element that matched the filter in case the user
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
138 // needs those.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
139
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
140 return fn.call(context, event, matchedEl, container, obj);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
141
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
142 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
143
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
144 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
145
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
146 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
147
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
148
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
149 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
150 * Appends a delegated event listener. Delegated event listeners
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
151 * receive three arguments by default: the DOM event, the element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
152 * specified by the filtering function or CSS selector, and the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
153 * container element (the element to which the event listener is
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
154 * bound). (Note: Using the delegate method requires the event-delegate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
155 * module. Using CSS selectors as the filtering criteria for delegated
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
156 * event listeners requires inclusion of the Selector Utility.)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
157 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
158 * @method delegate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
159 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
160 * @param {String|HTMLElement|Array|NodeList} container An id, an element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
161 * reference, or a collection of ids and/or elements to assign the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
162 * listener to.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
163 * @param {String} type The type of event listener to append
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
164 * @param {Function} fn The method the event invokes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
165 * @param {Function|string} filter Function or CSS selector used to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
166 * determine for what element(s) the event listener should be called.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
167 * When a function is specified, the function should return an
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
168 * HTML element. Using a CSS Selector requires the inclusion of the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
169 * CSS Selector Utility.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
170 * @param {Object} obj An arbitrary object that will be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
171 * passed as a parameter to the listener
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
172 * @param {Boolean|object} overrideContext If true, the value of the obj parameter becomes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
173 * the execution context of the listener. If an
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
174 * object, this object becomes the execution
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
175 * context.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
176 * @return {Boolean} Returns true if the action was successful or defered,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
177 * false if one or more of the elements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
178 * could not have the listener attached,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
179 * or if the operation throws an exception.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
180 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
181 * @for Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
182 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
183 delegate: function (container, type, fn, filter, obj, overrideContext) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
184
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
185 var sType = type,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
186 fnMouseDelegate,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
187 fnDelegate;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
188
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
189
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
190 if (Lang.isString(filter) && !YAHOO.util.Selector) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
191 YAHOO.log("Using a CSS selector to define the filtering criteria for a delegated listener requires the Selector Utility.", "error", "Event");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
192 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
193 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
194
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
195
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
196 if (type == "mouseenter" || type == "mouseleave") {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
197
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
198 if (!Event._createMouseDelegate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
199 YAHOO.log("Delegating a " + type + " event requires the event-mouseenter module.", "error", "Event");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
200 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
201 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
202
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
203 // Look up the real event--either mouseover or mouseout
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
204 sType = Event._getType(type);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
205
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
206 fnMouseDelegate = Event._createMouseDelegate(fn, obj, overrideContext);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
207
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
208 fnDelegate = Event._createDelegate(function (event, matchedEl, container) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
209
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
210 return fnMouseDelegate.call(matchedEl, event, container);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
211
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
212 }, filter, obj, overrideContext);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
213
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
214 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
215 else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
216
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
217 fnDelegate = Event._createDelegate(fn, filter, obj, overrideContext);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
218
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
219 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
220
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
221 delegates.push([container, sType, fn, fnDelegate]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
222
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
223 return Event.on(container, sType, fnDelegate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
224
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
225 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
226
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
227
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
228 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
229 * Removes a delegated event listener.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
230 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
231 * @method removeDelegate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
232 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
233 * @param {String|HTMLElement|Array|NodeList} container An id, an element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
234 * reference, or a collection of ids and/or elements to remove
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
235 * the listener from.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
236 * @param {String} type The type of event to remove.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
237 * @param {Function} fn The method the event invokes. If fn is
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
238 * undefined, then all event listeners for the type of event are
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
239 * removed.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
240 * @return {boolean} Returns true if the unbind was successful, false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
241 * otherwise.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
242 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
243 * @for Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
244 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
245 removeDelegate: function (container, type, fn) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
246
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
247 var sType = type,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
248 returnVal = false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
249 index,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
250 cacheItem;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
251
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
252 // Look up the real event--either mouseover or mouseout
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
253 if (type == "mouseenter" || type == "mouseleave") {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
254 sType = Event._getType(type);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
255 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
256
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
257 index = Event._getCacheIndex(delegates, container, sType, fn);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
258
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
259 if (index >= 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
260 cacheItem = delegates[index];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
261 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
262
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
263
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
264 if (container && cacheItem) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
265
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
266 returnVal = Event.removeListener(cacheItem[0], cacheItem[1], cacheItem[3]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
267
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
268 if (returnVal) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
269 delete delegates[index][2];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
270 delete delegates[index][3];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
271 delegates.splice(index, 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
272 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
273
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
274 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
275
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
276 return returnVal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
277
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
278 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
279
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
280 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
281
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
282 }());
1073
289ff43cc190 update YUI dev libs to latest version
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
283 YAHOO.register("event-delegate", YAHOO.util.Event, {version: "2.8.2r1", build: "7"});