Mercurial > nebulaweb3
diff default/node_modules/shoestring/src/dom/prev.js @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/default/node_modules/shoestring/src/dom/prev.js Sat May 31 09:21:51 2025 +0800 @@ -0,0 +1,50 @@ +//>>excludeStart("exclude", pragmas.exclude); +define([ "shoestring" ], function(){ +//>>excludeEnd("exclude"); + + /** + * Returns a `shoestring` object with the set of *one* siblingx before each element in the original set. + * + * @return shoestring + * @this shoestring + */ + shoestring.fn.prev = function(){ + //>>includeStart("development", pragmas.development); + if( arguments.length > 0 ){ + shoestring.error( 'prev-selector' ); + } + //>>includeEnd("development"); + + var result = []; + + // TODO need to implement map + this.each(function() { + var children, item, found; + + // get the child nodes for this member of the set + children = shoestring( this.parentNode )[0].childNodes; + + for( var i = children.length -1; i >= 0; i-- ){ + item = children.item( i ); + + // found the item we needed (found) which means current item value is + // the next node in the list, as long as it's viable grab it + // NOTE may need to be more permissive + if( found && item.nodeType === 1 ){ + result.push( item ); + break; + } + + // find the current item and mark it as found + if( item === this ){ + found = true; + } + } + }); + + return shoestring( result ); + }; + +//>>excludeStart("exclude", pragmas.exclude); +}); +//>>excludeEnd("exclude");