OSDN Git Service

Version 0.6.23, remove AbstractBox(AbstractDisplayContainer), working ie-filter-fix.
[pettanr/clientJs.git] / 0.6.x / js / dom / 17_XDomNodeList.js
1 \r
2 X.Dom.NodeList = function( v ){\r
3         var args = [],\r
4                 l    = arguments.length,\r
5                 i    = 0,\r
6                 indexOf, xnode, j, n = 0, skip;\r
7         for( ; i < l; ++i ){\r
8                 //args.push( arguments[ i ] );\r
9                 args.push.apply( args, arguments[ i ] );\r
10         };\r
11         //alert( arguments[ 0 ].length + ' , ' + args.length )\r
12         if( ( l = args.length ) === 1 ) return new X.Dom.Node( args[ 0 ] );\r
13         if( !this || this.append !== X.Dom.NodeList.prototype.append ) return new X.Dom.NodeList( args );\r
14         \r
15         for( i = 0; i < l; ++i ){\r
16                 xnode = args[ i ];\r
17                 //xnode = xnode && xnode.constructor === X.Dom.Node ? xnode : new X.Dom.Node( xnode );\r
18                 skip  = false;\r
19                 if( xnode._xnodeType === 0 ) continue;\r
20                 for( j = 0; j < n; ++j ){\r
21                         if( this[ j ] === xnode ){\r
22                                 skip = true;\r
23                                 break;\r
24                         };\r
25                 };\r
26                 if( !skip ){\r
27                         this[ n ] = xnode;\r
28                         n = ++this.length;      \r
29                 };\r
30         };\r
31 };\r
32 X.Dom.NodeList.prototype.length = 0;\r
33 \r
34 X.Dom.NodeList.prototype.each = function( func ){\r
35         var l = this.length,\r
36                 i = 0;\r
37         for( i = 0, l = this.length; i < l; ++i ){\r
38                 if( func.call( this[ i ], i ) === false ) break;\r
39         };\r
40         return this;\r
41 };\r
42 \r
43 /* --------------------------------------\r
44  *  Fuction Base, multi, getter, setter,\r
45  */\r
46 (function(){\r
47         var target = X.Dom.NodeList.prototype,\r
48                 src    = X.Dom.Node.prototype,\r
49                 p, v, multi;\r
50 \r
51         for( p in src ){\r
52                 v = src[ p ];\r
53                 if( typeof v === 'funciton' && !target[ p ] ){\r
54                         target[ p ] = multi = new Function( [\r
55                                 'var a=arguments,s=a.callee,f=s.f,t=this,i,l=t.length;',\r
56                                 'if(0<l){',\r
57                                         'for(i=0;i<l;++i)if(i===l-1)return f.apply(t[i],a)else f.apply(t[i],a);',\r
58                                 '}',\r
59                                 'return f.apply(t,a)'\r
60                         ].join( '' ) );\r
61                         multi.f = src[ p ];\r
62                 };\r
63         };\r
64 })();\r
65 \r
66 \r