The Element#match function doesn't work correctly with a CSS selector
that includes comma separated values. This means that Element#select
and Element#match behave differently when passed the same CSS
selector. The following is an example of how match should work.
$$('input, label').collect(function(e) {return e.match('input,
label')}) //=> an Array with all true values

Instead the following currently happens:
$$('input, label').collect(function(e) {return e.match('input,
label')}) //=> false is returned for each label

The following is a replacement for the current match method (based on
Element#select) but haven't had a chance to turn it into a patch or
properly test it. Anyone want to lend a hand? :-)

match: function(element, selector) {
    var expressions = $A(arguments), element = $(expressions.shift());
    var exprs = expressions.join(','), expressions = [];
    exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m)
{
      expressions.push(m[1].strip());
    });
    return !Object.isUndefined(expressions.detect(function(selector) {
      selector = new Selector(selector);
      return selector.match($(element));
    }));
  },


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to