|
16 | 16 | return window.setTimeout(fn, 20);
|
17 | 17 | };
|
18 | 18 |
|
| 19 | + /** |
| 20 | + * Iterate over each of the provided element(s). |
| 21 | + * |
| 22 | + * @param {HTMLElement|HTMLElement[]} elements |
| 23 | + * @param {Function} callback |
| 24 | + */ |
| 25 | + function forEachElement(elements, callback){ |
| 26 | + var elementsType = Object.prototype.toString.call(elements); |
| 27 | + var isCollectionTyped = ('[object Array]' === elementsType |
| 28 | + || ('[object NodeList]' === elementsType) |
| 29 | + || ('[object HTMLCollection]' === elementsType) |
| 30 | + || ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery |
| 31 | + || ('undefined' !== typeof Elements && elements instanceof Elements) //mootools |
| 32 | + ); |
| 33 | + var i = 0, j = elements.length; |
| 34 | + if (isCollectionTyped) { |
| 35 | + for (; i < j; i++) { |
| 36 | + callback(elements[i]); |
| 37 | + } |
| 38 | + } else { |
| 39 | + callback(elements); |
| 40 | + } |
| 41 | + } |
| 42 | + |
19 | 43 | /**
|
20 | 44 | * Class for dimension change detection.
|
21 | 45 | *
|
|
158 | 182 | addEvent(shrink, 'scroll', onScroll);
|
159 | 183 | }
|
160 | 184 |
|
161 |
| - var elementType = Object.prototype.toString.call(element); |
162 |
| - var isCollectionTyped = ('[object Array]' === elementType |
163 |
| - || ('[object NodeList]' === elementType) |
164 |
| - || ('[object HTMLCollection]' === elementType) |
165 |
| - || ('undefined' !== typeof jQuery && element instanceof jQuery) //jquery |
166 |
| - || ('undefined' !== typeof Elements && element instanceof Elements) //mootools |
167 |
| - ); |
168 |
| - |
169 |
| - if (isCollectionTyped) { |
170 |
| - var i = 0, j = element.length; |
171 |
| - for (; i < j; i++) { |
172 |
| - attachResizeEvent(element[i], callback); |
173 |
| - } |
174 |
| - } else { |
175 |
| - attachResizeEvent(element, callback); |
176 |
| - } |
| 185 | + forEachElement(element, function(elem){ |
| 186 | + attachResizeEvent(elem, callback); |
| 187 | + }); |
177 | 188 |
|
178 | 189 | this.detach = function(ev) {
|
179 |
| - if (isCollectionTyped) { |
180 |
| - var i = 0, j = element.length; |
181 |
| - for (; i < j; i++) { |
182 |
| - ResizeSensor.detach(element[i], ev); |
183 |
| - } |
184 |
| - } else { |
185 |
| - ResizeSensor.detach(element, ev); |
186 |
| - } |
| 190 | + ResizeSensor.detach(element, ev); |
187 | 191 | };
|
188 | 192 | };
|
189 | 193 |
|
190 | 194 | ResizeSensor.detach = function(element, ev) {
|
191 |
| - if(typeof ev == "function"){ |
192 |
| - element.resizedAttached.remove(ev); |
193 |
| - if(element.resizedAttached.length()) return; |
194 |
| - } |
195 |
| - if (element.resizeSensor) { |
196 |
| - element.removeChild(element.resizeSensor); |
197 |
| - delete element.resizeSensor; |
198 |
| - delete element.resizedAttached; |
199 |
| - } |
| 195 | + forEachElement(element, function(elem){ |
| 196 | + if(elem.resizedAttached && typeof ev == "function"){ |
| 197 | + elem.resizedAttached.remove(ev); |
| 198 | + if(elem.resizedAttached.length()) return; |
| 199 | + } |
| 200 | + if (elem.resizeSensor) { |
| 201 | + elem.removeChild(elem.resizeSensor); |
| 202 | + delete elem.resizeSensor; |
| 203 | + delete elem.resizedAttached; |
| 204 | + } |
| 205 | + }); |
200 | 206 | };
|
201 | 207 |
|
202 | 208 | // make available to common module loader
|
|
0 commit comments