Changeset 6562
- Timestamp:
- 04/24/07 06:06:44 (1 year ago)
- Files:
-
- spinoffs/prototype/trunk/CHANGELOG (modified) (1 diff)
- spinoffs/prototype/trunk/src/dom.js (modified) (5 diffs)
- spinoffs/prototype/trunk/test/unit/dom.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
spinoffs/prototype/trunk/CHANGELOG
r6561 r6562 1 1 *SVN* 2 3 * Optimize DOM navigation methods (Element#up, Element#down, Element#previous, Element#next) for no-argument calls. Closes #7848. [haraldmartin, sam] 4 5 * Add Element#firstDescendant to retrieve the first non-text child node of an element. [sam] 2 6 3 7 * Element.addMethods should add methods to Element as well as Element.Methods. Closes #7888. [Andrew Dupont] spinoffs/prototype/trunk/src/dom.js
r6561 r6562 153 153 }, 154 154 155 firstDescendant: function(element) { 156 element = $(element).firstChild; 157 while (element && element.nodeType != 1) element = element.nextSibling; 158 return $(element); 159 }, 160 155 161 immediateDescendants: function(element) { 156 162 if (!(element = $(element).firstChild)) return []; … … 180 186 181 187 up: function(element, expression, index) { 182 var ancestors = $(element).ancestors(); 188 element = $(element); 189 if (arguments.length == 1) return $(element.parentNode); 190 var ancestors = element.ancestors(); 183 191 return expression ? Selector.findElement(ancestors, expression, index) : 184 192 ancestors[index || 0]; … … 186 194 187 195 down: function(element, expression, index) { 188 var descendants = $(element).descendants(); 196 element = $(element); 197 if (arguments.length == 1) return element.firstDescendant(); 198 var descendants = element.descendants(); 189 199 return expression ? Selector.findElement(descendants, expression, index) : 190 200 descendants[index || 0]; … … 192 202 193 203 previous: function(element, expression, index) { 194 var previousSiblings = $(element).previousSiblings(); 204 element = $(element); 205 if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); 206 var previousSiblings = element.previousSiblings(); 195 207 return expression ? Selector.findElement(previousSiblings, expression, index) : 196 208 previousSiblings[index || 0]; … … 198 210 199 211 next: function(element, expression, index) { 200 var nextSiblings = $(element).nextSiblings(); 212 element = $(element); 213 if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); 214 var nextSiblings = element.nextSiblings(); 201 215 return expression ? Selector.findElement(nextSiblings, expression, index) : 202 216 nextSiblings[index || 0]; spinoffs/prototype/trunk/test/unit/dom.html
r6561 r6562 480 480 }}, 481 481 482 testElementFirstDescendant: function() {with(this) { 483 assertElementMatches($('navigation_test').firstDescendant(), 'li.first'); 484 assertNull($('navigation_test_next_sibling').firstDescendant()); 485 }}, 486 482 487 testElementImmediateDescendants: function() {with(this) { 483 488 assertElementsMatch($('navigation_test').immediateDescendants(),