Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #7848: update2.patch

File update2.patch, 2.7 kB (added by haraldmartin, 1 year ago)

Patch with anonymous findChildNodes instead

  • src/dom.js

    old new  
    151151  descendants: function(element) { 
    152152    return $A($(element).getElementsByTagName('*')).each(Element.extend); 
    153153  }, 
    154    
    155   immediateDescendants: function(element) { 
    156     if (!(element = $(element).firstChild)) return []; 
    157     while (element && element.nodeType != 1) element = element.nextSibling; 
    158     if (element) return [element].concat($(element).nextSiblings()); 
    159     return []; 
    160   }, 
    161154 
    162155  previousSiblings: function(element) { 
    163156    return $(element).recursivelyCollect('previousSibling'); 
     
    179172  }, 
    180173   
    181174  up: function(element, expression, index) { 
     175    if (arguments.length == 1) return $(element.parentNode); 
    182176    var ancestors = $(element).ancestors(); 
    183177    return expression ? Selector.findElement(ancestors, expression, index) : 
    184178      ancestors[index || 0]; 
    185179  }, 
    186    
    187   down: function(element, expression, index) { 
    188     var descendants = $(element).descendants(); 
    189     return expression ? Selector.findElement(descendants, expression, index) : 
    190       descendants[index || 0]; 
    191   }, 
    192180 
    193181  previous: function(element, expression, index) { 
     182    if (arguments.length == 1) 
     183      return $(Selector.handlers.previousElementSibling(element)); 
    194184    var previousSiblings = $(element).previousSiblings(); 
    195185    return expression ? Selector.findElement(previousSiblings, expression, index) : 
    196186      previousSiblings[index || 0]; 
    197187  }, 
    198    
     188 
    199189  next: function(element, expression, index) { 
     190    if (arguments.length == 1)  
     191      return $(Selector.handlers.nextElementSibling(element)); 
    200192    var nextSiblings = $(element).nextSiblings(); 
    201193    return expression ? Selector.findElement(nextSiblings, expression, index) : 
    202194      nextSiblings[index || 0]; 
     
    412404  }   
    413405}; 
    414406 
     407Object.extend(Element.Methods, (function() { 
     408  function findChildNodes(element, single) { 
     409    var returning = single ? null : []; 
     410    if (!(element = $(element).firstChild)) return returning; 
     411    while (element && element.nodeType != 1) element = element.nextSibling; 
     412    if (element) return single ? element : [element].concat($(element).nextSiblings()); 
     413    return returning;     
     414  } 
     415 
     416  return { 
     417    immediateDescendants: function(element) { 
     418      return findChildNodes(element); 
     419    }, 
     420 
     421    down: function(element, expression, index) { 
     422      if (arguments.length == 1) return findChildNodes(element, true); 
     423      var descendants = $(element).descendants(); 
     424      return expression ? Selector.findElement(descendants, expression, index) : 
     425        descendants[index || 0]; 
     426    } 
     427  } 
     428})()); 
     429 
    415430Object.extend(Element.Methods, {childOf: Element.Methods.descendantOf}); 
    416431 
    417432if (Prototype.Browser.Opera) {