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

Ticket #7848: optimized_dom_nav.diff

File optimized_dom_nav.diff, 1.6 kB (added by haraldmartin, 1 year ago)
  • src/dom.js

    old new  
    179179  }, 
    180180   
    181181  up: function(element, expression, index) { 
     182    if (arguments.length == 1) return $(element.parentNode); 
    182183    var ancestors = $(element).ancestors(); 
    183184    return expression ? Selector.findElement(ancestors, expression, index) : 
    184185      ancestors[index || 0]; 
    185186  }, 
    186    
     187 
    187188  down: function(element, expression, index) { 
     189    if (arguments.length == 1) { 
     190      // heavily based on immediateDescendants and should be refactored 
     191      if (!(element = $(element).firstChild)) return null; 
     192      while (element && element.nodeType != 1) element = element.nextSibling; 
     193      if (element) return $(element); 
     194      return null; 
     195    } 
    188196    var descendants = $(element).descendants(); 
    189197    return expression ? Selector.findElement(descendants, expression, index) : 
    190198      descendants[index || 0]; 
    191199  }, 
    192200 
    193201  previous: function(element, expression, index) { 
     202    if (arguments.length == 1) 
     203      return $(Selector.handlers.previousElementSibling(element)); 
    194204    var previousSiblings = $(element).previousSiblings(); 
    195205    return expression ? Selector.findElement(previousSiblings, expression, index) : 
    196206      previousSiblings[index || 0]; 
    197207  }, 
    198208 
    199209  next: function(element, expression, index) { 
     210    if (arguments.length == 1)  
     211      return $(Selector.handlers.nextElementSibling(element)); 
    200212    var nextSiblings = $(element).nextSiblings(); 
    201213    return expression ? Selector.findElement(nextSiblings, expression, index) : 
    202214      nextSiblings[index || 0];