Mercurial > nebulaweb3
diff default/node_modules/shoestring/src/dom/closest.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/closest.js Sat May 31 09:21:51 2025 +0800 @@ -0,0 +1,42 @@ +//>>excludeStart("exclude", pragmas.exclude); +define([ "shoestring", "dom/is" ], function( shoestring ) { +//>>excludeEnd("exclude"); + + /** + * Find an element matching the selector in the set of the current element and its parents. + * + * @param {string} selector The selector used to identify the target element. + * @return shoestring + * @this shoestring + */ + shoestring.fn.closest = function( selector ){ + var ret = []; + + if( !selector ){ + return shoestring( ret ); + } + + this.each(function(){ + var element, $self = shoestring( element = this ); + + if( $self.is(selector) ){ + ret.push( this ); + return; + } + + while( element.parentElement ) { + if( shoestring(element.parentElement).is(selector) ){ + ret.push( element.parentElement ); + break; + } + + element = element.parentElement; + } + }); + + return shoestring( ret ); + }; + +//>>excludeStart("exclude", pragmas.exclude); +}); +//>>excludeEnd("exclude");