Even faster: http://jsperf.com/moo-hasclass-alternative/4 :D
On Feb 18, 5:48 pm, Arian Stolwijk <[email protected]> wrote: > Even faster:http://jsperf.com/moo-hasclass-alternative/3 > > On Fri, Feb 18, 2011 at 4:37 PM, Ryan Florence <[email protected]> wrote: > >http://jsperf.com/moo-hasclass-alternative > > > Yeah, it appears to be faster (need to test more browsers). Only question > > is if it passes all the specs in all supported browsers. > > > If it passes all the specs, then, as usual, fork core and specs (I like to > > create a branch too), push your changes, send a pull request. Nobody needs > > to be invited to improve MooTools :) > > > On Feb 18, 2011, at 7:14 AM, Garret Wilson wrote: > > > > I appreciate the quick, honest and accepting responses on this forum. > > > I'm still debating whether to convert my ~2005 library to use > > > MooTools, or simply update it to recent changes myself. Some things > > > make me want to move to MooTools, like when I look at all the element > > > size/position fixups I wrote that are probably out of date with > > > today's browsers. But some of the core content processing makes me > > > like what I have. Here's my old hasClass(): > > > > /**Determines whether the given element has the given class, using > > > DOM methods. Multiple class names are supported. > > > @param element The element that should be checked for class. > > > @param className The name of the class for which to check, or a > > > regular expression if a match should be found. > > > @return true if one of the element's class names equals the given > > > class name. > > > */ > > > hasClass:function(element, className) > > > { > > > var classNamesString=element.getAttribute("class"); > > //get the > > > element's class names > > > var classNames=classNamesString ? > > classNamesString.split(/\s/) : > > > EMPTY_ARRAY; //split out the class names > > > return className instanceof RegExp ? > > > classNames.containsMatch(className) : > > > classNames.contains(className); //return whether this class name is > > > one of the class names > > > }, > > > > 1. I note that the MooTools version uses a very brute-force string > > > based approach. That is, it "cleans" the string (using a regular > > > expression to change whitespace to spaces), then trims the string, > > > then fixes up the original string with surrounding spaced, then adds a > > > space to the test string, and then (finally!) walks through the string > > > with indexOf(). Since MooTools already starts the whole process with a > > > regex, anyway, isn't the above approach more efficient? > > > > 2. More importantly, I need to check against regular expressions. How > > > open would MooTools be to adding regex capability to methods such as > > > this? > > > > Thanks, > > > > Garret > > > > P.S. I haven't looked at my code in about five years. I'm not sure why > > > I didn't just bind hasClass() to Element.prototype. Any ideas? Did IE6 > > > or some similar nightmare prevent adding Element methods or something?
