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

Changeset 4876

Show
Ignore:
Timestamp:
08/30/06 16:14:32 (2 years ago)
Author:
sam
Message:

prototype: Add Element.Methods.getElementsByClassName and Element.Methods.getElementsBySelector. Closes #4669.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • spinoffs/prototype/CHANGELOG

    r4875 r4876  
    11*SVN* 
     2 
     3* Add Element.Methods.getElementsByClassName and Element.Methods.getElementsBySelector. Closes #4669. [Andrew Dupont, DHH, sam] 
    24 
    35* Avoid race condition when stopping an Ajax.PeriodicalUpdater. Closes #4809. [e98cuenc@gmail.com] 
  • spinoffs/prototype/src/dom.js

    r4858 r4876  
    9696    } 
    9797    setTimeout(function() {html.evalScripts()}, 10); 
     98  }, 
     99   
     100  getElementsByClassName: function(element, className) { 
     101    element = $(element); 
     102    return document.getElementsByClassName(className, element); 
     103  }, 
     104   
     105  getElementsBySelector: function() { 
     106    var args = $A(arguments), element = args.shift(); 
     107    return $$.apply(null, args).select(function(potentialChild) { 
     108      return potentialChild.childOf(element);  
     109    }); 
    98110  }, 
    99111   
  • spinoffs/prototype/test/unit/dom.html

    r4859 r4876  
    3838    </tbody> 
    3939  </table> 
     40</div> 
     41 
     42<p class="test">Test paragraph outside of container</p> 
     43 
     44<div id="container"> 
     45        <p class="test" id="intended">Test paragraph 1 inside of container</p> 
     46        <p class="test">Test paragraph 2 inside of container</p> 
     47        <p class="test">Test paragraph 3 inside of container</p> 
     48        <p class="test">Test paragraph 4 inside of container</p> 
    4049</div> 
    4150 
     
    95104      Element.update('table','<tr><td>boo!</td></tr>'); 
    96105      assertMatch(/^<tr>\s*<td>boo!<\/td><\/tr>$/,$('table').innerHTML.toLowerCase()); 
     106    }}, 
     107     
     108    testElementSelectorMethod: function() {with(this) { 
     109      var testSelector = $('container').getElementsBySelector('p.test'); 
     110      assertEqual(testSelector.length, 4); 
     111      assertEqual(testSelector[0], $('intended')); 
     112      assertEqual(testSelector[0], $$('#container p.test')[0]); 
     113    }}, 
     114        
     115    testElementClassNameMethod: function() {with(this) { 
     116      var testClassNames = $('container').getElementsByClassName('test'); 
     117      var testSelector = $('container').getElementsBySelector('p.test'); 
     118      assertEqual(testClassNames[0], $('intended')); 
     119      assertEqual(testClassNames.length, 4); 
     120      assertEqual(testSelector[3], testClassNames[3]); 
     121      assertEqual(testClassNames.length, testSelector.length); 
    97122    }} 
    98      
    99123  }, 'testlog'); 
    100124