Changeset 1160
- Timestamp:
- 10/10/06 07:44:11 (2 years ago)
- Files:
-
- mochikit/branches/selector/MochiKit/Selector.js (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
mochikit/branches/selector/MochiKit/Selector.js
r1158 r1160 1 /*** 2 3 MochiKit.Selector 1.4 4 5 See <http://mochikit.com/> for documentation, downloads, license, etc. 6 7 (c) 2005 Bob Ippolito and others. All rights Reserved. 8 9 ***/ 10 1 11 if (typeof(dojo) != 'undefined') { 2 12 dojo.provide('MochiKit.Selector'); … … 43 53 44 54 MochiKit.Selector.Selector.prototype = { 45 55 /*** 56 57 Selector class: convenient object to make CSS selections. 58 59 ***/ 46 60 __class__: MochiKit.Selector.Selector, 47 61 62 /** @id MochiKit.Selector.Selector.prototype.parseExpression */ 48 63 parseExpression: function () { 49 64 function abort(message) { … … 97 112 }, 98 113 114 /** @id MochiKit.Selector.Selector.prototype.buildMatchExpression */ 99 115 buildMatchExpression: function () { 100 116 var params = this.params; 101 117 var conditions = []; 102 var clause ;118 var clause, i; 103 119 104 120 function childElements(element) { … … 116 132 } 117 133 if ((clause = params.classNames).length > 0) { 118 for ( vari = 0; i < clause.length; i++) {134 for (i = 0; i < clause.length; i++) { 119 135 conditions.push('MochiKit.DOM.hasElementClass(element, ' + repr(clause[i]) + ')'); 120 136 } 121 137 } 122 138 if ((clause = params.pseudoClassNames).length > 0) { 123 for ( vari = 0; i < clause.length; i++) {139 for (i = 0; i < clause.length; i++) { 124 140 var match = clause[i].match(/^([^(]+)(?:\((.*)\))?$/); 125 141 var pseudoClass = match[1]; … … 233 249 }, 234 250 251 /** @id MochiKit.Selector.Selector.prototype.compileMatcher */ 235 252 compileMatcher: function () { 236 253 this.match = new Function('element', 'if (!element.tagName) return false; \ … … 238 255 }, 239 256 257 /** @id MochiKit.Selector.Selector.prototype.nthChild */ 240 258 nthChild: function (element, a, b, reverse, sametag){ 241 259 var siblings = MochiKit.Base.filter(function (node) { … … 258 276 }, 259 277 278 /** @id MochiKit.Selector.Selector.prototype.findElements */ 260 279 findElements: function (scope, axis) { 261 280 var element; … … 331 350 } 332 351 333 var results = []; 334 for (var i = 0; i < scope.length; i++) { 335 if (this.match(element = scope[i])) { 336 results.push(element); 337 } 338 } 352 var results = MochiKit.Base.filter(MochiKit.Base.bind(function (scopeElt) { 353 return this.match(scopeElt); 354 }, this), scope); 339 355 340 356 return results; 341 357 }, 342 358 343 toString: function () { 344 return this.expression; 345 } 346 359 /** @id MochiKit.Selector.Selector.prototype.repr */ 360 repr: function () { 361 return 'Selector(' + this.expression + ')'; 362 }, 363 364 toString: MochiKit.Base.forwardCall("repr") 347 365 }; 348 366 349 367 MochiKit.Base.update(MochiKit.Selector, { 350 368 369 /** @id MochiKit.Selector.findChildElements */ 351 370 findChildElements: function (element, expressions) { 352 371 return MochiKit.Base.flattenArray(MochiKit.Base.map(function (expression) {
