Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <div data-type='project' id='example1'>
- <input name='start-date'/>
- <div data-type='project-lead' id='example2'>
- <input name='department'/>
- <input name='email'/>
- <div data-type='analyst'>
- <input name='department'/>
- <input name='email'/>
- </div>
- <div data-type='analyst'>
- <input name='department'/>
- <input name='email'/>
- </div>
- <div data-type='analyst'>
- <input name='department'/>
- <input name='email'/>
- </div>
- </div>
- <div class="JustToMakeMyLifeMoreDifficult">
- <div data-type='sponsor'>
- <input name='department'/>
- <input name='email'/>
- </div>
- <div data-type='sponsor'>
- <input name='department'/>
- <input name='email'/>
- </div>
- </div>
- </div>
- myData($obj){
- return $obj.find('[data-type]').not([data-type elements further down]);
- }
- myData($('#example1'))
- myData($('#example2'))
- [project-lead,sponsor,sponsor]
- [analyst, analyst, analyst]
- (function( $ ){
- $.fn.dataChildren = function(_selector) {
- var iter = this;
- var res = this.children(_selector);
- while ( ( iter = iter.children(':not(' + _selector +')') ).length ) {
- res = res.add(iter.children(_selector));
- }
- return res;
- };
- })( jQuery );
- $('#example1').dataChildren('[data-type]')
- var el = $('#example1');
- var res = el.children('[data-type]');
- while ( ( el = el.children(':not([data-type])') ).length ) {
- res = res.add(el.children('[data-type]'));
- }
- var el = $('#example1'); // el is the current level
- var res = $(); // res holds the result
- var data_types; // holds the children with data-type for the current level
- do {
- // from current level, get children with data-type
- data_types = el.children('[data-type]');
- // add those to the result set
- res = res.add( data_types );
- // make the current level be the children of the current level that
- // do NOT have data-type
- el = el.children().not( data_types );
- } while( el.length ); // continue as long as the new current level
- // has at least one element
- var ex = $('#example1');
- var res = ex.find('> [data-type], > * > [data-type]');
- var ex = $('#example1');
- var res = ex.find('> [data-type], > :not([data-type]) > [data-type]');
- '> [data-type]'
- '> :not([data-type]) > [data-type]'
- function getNodes(id) {
- var el = (typeof id == 'string')? document.getElementById(id) : id;
- var result = [];
- var node, nodes = el.childNodes;
- var prop = 'data-type';
- var tag = 'div';
- for (var i=0, iLen=nodes.length; i<iLen; i++) {
- node = nodes[i];
- if (node.tagName && node.tagName.toLowerCase() == tag) {
- if (node.getAttribute(prop)) {
- result.push(node);
- } else {
- result = result.concat(getNodes(node));
- }
- }
- }
- return result;
- }
- $obj.find('> [data-type]');
Add Comment
Please, Sign In to add comment