comparison default/node_modules/shoestring/src/dom/is.js @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1d038bc9b3d2
1 //>>excludeStart("exclude", pragmas.exclude);
2 define([ "shoestring" ], function(){
3 //>>excludeEnd("exclude");
4
5 /**
6 * Checks the current set of elements against the selector, if one matches return `true`.
7 *
8 * @param {string} selector The selector to check.
9 * @return {boolean}
10 * @this {shoestring}
11 */
12 shoestring.fn.is = function( selector ){
13 var ret = false, self = this, parents, check;
14
15 // assume a dom element
16 if( typeof selector !== "string" ){
17 // array-like, ie shoestring objects or element arrays
18 if( selector.length && selector[0] ){
19 check = selector;
20 } else {
21 check = [selector];
22 }
23
24 return _checkElements(this, check);
25 }
26
27 parents = this.parent();
28
29 if( !parents.length ){
30 parents = shoestring( doc );
31 }
32
33 parents.each(function( i, e ) {
34 var children;
35
36 //>>includeStart("development", pragmas.development);
37 try {
38 //>>includeEnd("development");
39 children = e.querySelectorAll( selector );
40 //>>includeStart("development", pragmas.development);
41 } catch( e ) {
42 shoestring.error( 'queryselector', selector );
43 }
44 //>>includeEnd("development");
45
46 ret = _checkElements( self, children );
47 });
48
49 return ret;
50 };
51
52 function _checkElements(needles, haystack){
53 var ret = false;
54
55 needles.each(function() {
56 var j = 0;
57
58 while( j < haystack.length ){
59 if( this === haystack[j] ){
60 ret = true;
61 }
62
63 j++;
64 }
65 });
66
67 return ret;
68 }
69
70 //>>excludeStart("exclude", pragmas.exclude);
71 });
72 //>>excludeEnd("exclude");