|
23 | 23 | : (selector && (selector === window || selector.nodeType) ? [selector] : selector)); |
24 | 24 | } |
25 | 25 |
|
26 | | - $.fn = { |
| 26 | + Wrapper.prototype = $.fn = { |
27 | 27 | constructor: Wrapper, |
28 | 28 | length: 0 |
29 | 29 | }; |
30 | | - Wrapper.prototype = $.fn; |
31 | 30 |
|
32 | | - $.extend = function (target) { |
| 31 | + $.fn.extend = $.extend = function (target) { |
33 | 32 | var options, name, copy, i = 0, length = arguments.length; |
34 | 33 | if (length <= 1) { |
35 | 34 | target = this; |
|
47 | 46 | } |
48 | 47 | return target; |
49 | 48 | }; |
50 | | - $.fn.extend = $.extend; |
51 | 49 |
|
52 | 50 | var prev_$ = window.$; |
53 | 51 | window.$ = $; |
|
71 | 69 | return false; |
72 | 70 | }, |
73 | 71 | each: function (array, callback) { |
74 | | - var value, i = 0, length = array.length; |
75 | | - for (; i < length; i++) { |
76 | | - value = array[i]; |
77 | | - if (callback.call(value, i, value) === false) { |
| 72 | + for (var i = 0, length = array.length ; i < length; i++) { |
| 73 | + if (callback(i, array[i]) === false) { |
78 | 74 | return false; |
79 | 75 | } |
80 | 76 | } |
81 | 77 | return true; |
82 | 78 | }, |
83 | | - grep: function (elems, callback, invert) { |
| 79 | + grep: function (array, callback, invert) { |
84 | 80 | var callbackInverse, |
85 | 81 | matches = [], |
86 | 82 | i = 0, |
87 | | - length = elems.length, |
| 83 | + length = array.length, |
88 | 84 | callbackExpect = !invert; |
89 | 85 | for (; i < length; i++) { |
90 | | - callbackInverse = !callback(i, elems[i]); |
| 86 | + callbackInverse = !callback(i, array[i]); |
91 | 87 | if (callbackInverse !== callbackExpect) { |
92 | | - matches.push(elems[i]); |
| 88 | + matches.push(array[i]); |
93 | 89 | } |
94 | 90 | } |
95 | 91 | return matches; |
96 | 92 | }, |
97 | | - map: function (elems, callback) { |
| 93 | + map: function (array, callback) { |
98 | 94 | var value, |
99 | 95 | i = 0, |
100 | | - length = elems.length, |
| 96 | + length = array.length, |
101 | 97 | ret = []; |
102 | 98 | for (; i < length; i++) { |
103 | | - value = callback(i, elems[i]); |
| 99 | + value = callback(array[i], i); |
104 | 100 | if (value != null) { |
105 | 101 | ret.push(value); |
106 | 102 | } |
|
111 | 107 |
|
112 | 108 | var DATAKEYPROP = '__jqlight_data__'; |
113 | 109 | $.fn.extend({ |
114 | | - each: function (callback, args) { |
115 | | - $.each(this, callback, args); |
| 110 | + each: function (callback) { |
| 111 | + $.each(this, function (index, elem) { |
| 112 | + return callback.call(elem, index, elem); |
| 113 | + }); |
116 | 114 | return this; |
117 | 115 | }, |
| 116 | + map: function (callback) { |
| 117 | + return $($.map(this, function (elem, index) { |
| 118 | + return callback.call(elem, index, elem); |
| 119 | + })); |
| 120 | + }, |
| 121 | + filter: function (callback) { |
| 122 | + return $($.grep(this, function (index, elem) { |
| 123 | + return callback.call(elem, index, elem); |
| 124 | + })); |
| 125 | + }, |
118 | 126 | ready: function (fn) { |
119 | 127 | if (/complete|loaded|interactive/.test(document.readyState) && document.body) { |
120 | 128 | fn(); |
|
140 | 148 | selector = undefined; |
141 | 149 | } |
142 | 150 | types = types.split(' '); |
143 | | - return this.each(function (i, elem) { |
| 151 | + return this.each(function (index, elem) { |
144 | 152 | var listener = selector ? delegateHandler.bind(elem, selector, fn) : fn; |
145 | 153 | $.each(types, function (j, eventName) { |
146 | 154 | if (eventName) { |
|
150 | 158 | }); |
151 | 159 | }, |
152 | 160 | off: function (types, selector, fn) { |
| 161 | + // Note: off() for delegated events is not supported |
153 | 162 | if (selector === false || $.isFunction(selector)) { |
154 | 163 | // ( types [, fn] ) |
155 | 164 | fn = selector; |
156 | | - selector = undefined; |
| 165 | + // selector = undefined; |
157 | 166 | } |
158 | 167 | types = types.split(' '); |
159 | | - return this.each(function (i, elem) { |
| 168 | + return this.each(function (index, elem) { |
160 | 169 | $.each(types, function (j, eventName) { |
161 | 170 | if (eventName) { |
162 | 171 | elem.removeEventListener(eventName, fn); |
|
181 | 190 | var elem = this[0]; |
182 | 191 | return elem && elem[DATAKEYPROP] ? elem[DATAKEYPROP][key] : undefined; |
183 | 192 | } |
184 | | - this.each(function (i, elem) { |
| 193 | + this.each(function (index, elem) { |
185 | 194 | elem[DATAKEYPROP] = elem[DATAKEYPROP] || {}; |
186 | 195 | elem[DATAKEYPROP][key] = value; |
187 | 196 | }); |
188 | 197 | return this; |
189 | 198 | }, |
190 | | - map: function (callback) { |
191 | | - return $($.map(this, callback)); |
192 | | - }, |
193 | | - filter: function (callback) { |
194 | | - return $($.grep(this, callback)); |
195 | | - }, |
196 | 199 | attr: function (name, value) { |
197 | 200 | if (value === undefined) { |
198 | 201 | return this.length ? this[0].getAttribute(name) : undefined; |
199 | 202 | } |
200 | | - $.each(this, function (i, elem) { |
201 | | - elem.setAttribute(name, value + ''); |
| 203 | + this.each(function () { |
| 204 | + this.setAttribute(name, value + ''); |
202 | 205 | }); |
203 | 206 | return this; |
204 | 207 | } |
|
214 | 217 | if (elem.nodeType === 1) { |
215 | 218 | origValue = elem.className; |
216 | 219 | cur = origValue ? ( ' ' + origValue + ' ' ).replace(/[\t\r\n\f]/g, ' ') : ' '; |
217 | | - j = 0; |
218 | | - while ((clazz = classes[j++])) { |
| 220 | + for (j = 0; (clazz = classes[j++]); ) { |
219 | 221 | cur = callback(cur, clazz, cur.indexOf(' ' + clazz + ' ') >= 0); |
220 | 222 | } |
221 | 223 | finalValue = cur.slice(1, -1); |
|
227 | 229 | return obj; |
228 | 230 | } |
229 | 231 |
|
230 | | - function delegateHandler(selector, handler, event) { |
231 | | - var currentTarget = closest.call([event.target], selector, this)[0]; |
232 | | - if (currentTarget && currentTarget !== this) { |
233 | | - handler.call(currentTarget, event); |
234 | | - } |
235 | | - } |
236 | | - |
237 | 232 | var matches = Element.matches || Element.matchesSelector || Element.mozMatchesSelector || Element.msMatchesSelector || Element.oMatchesSelector || Element.webkitMatchesSelector; |
238 | 233 |
|
239 | | - function closest(selector, context) { |
240 | | - var nodes = []; |
241 | | - $.each(this, function (i, node) { |
242 | | - while (node && node !== context) { |
243 | | - if (matches.call(node, selector)) { |
244 | | - nodes.push(node); |
245 | | - break; |
246 | | - } |
247 | | - node = node.parentElement; |
| 234 | + function delegateHandler(selector, handler, event) { |
| 235 | + var node = event.target; |
| 236 | + while (node && node !== this) { |
| 237 | + if (matches.call(node, selector)) { |
| 238 | + return handler.call(node, event); |
248 | 239 | } |
249 | | - }); |
250 | | - return $($.grep(nodes, function (index, item) { |
251 | | - return nodes.indexOf(item) === index; |
252 | | - })); |
| 240 | + node = node.parentElement; |
| 241 | + } |
253 | 242 | } |
254 | 243 | })(window, document, Element.prototype); |
0 commit comments