Ok, so I think I found the root of the problem here. If I pass an
element as the thing to match, this method still fires

Selectors.Utils.parseTagAndID(selector);

which throws an error since this method assumes "selector" is a
string.

I have no idea how this assumption was reached, but by putting an
extra switch to test for the $type() of the selector, I was able to
avoid calling this entire section of code.

Now my .match() method looks like:


match: function(selector){
        if (!selector) {
            return false;
        } else if (selector === this) {
            return true;
        } else if ($type(selector) === "string"){
                var tagid = Selectors.Utils.parseTagAndID(selector);
                var tag = tagid[0], id = tagid[1];
                if (!Selectors.Filters.byID(this, id) || 
!Selectors.Filters.byTag
(this, tag)) return false;
                var parsed = Selectors.Utils.parseSelector(selector);
                return (parsed) ? Selectors.Utils.filter(this, parsed, {}) :
true;
        }
        return false;
}

Am I totally missing something here, or does this sound reasonable?



On Apr 3, 9:41 am, Jacob <[email protected]> wrote:
> +1
> Thanks for all the help!
> So, does this mean a mootools committer needs to file this as a bug,
> or should/can I?
>
> Also, on a small selector tangent, I think there is a bug with
> the :contains() pseudo selector. For example, lets say you have this
> markup:
>
> <a href="foo" title="A link">Click Me</a>
>
> So a selector like this should work: $$('a:contains(Click Me)') ,
> right? It doesnt for me. Only this works: $$('a:contains(Click)') .
>
> Same thing for attribute selectors. This doesnt work: $$("a[title=A
> link]"). Rather, I have to do this:  $$("a[title*=A link]").
>
> I wrote a post about this a couple months back. Is this a bug too?
> Does it need to be logged?
>
> I would like to be more helpful in documenting these types of things.
>
> Thanks
> Jacob
>
> On Apr 3, 6:01 am, daKmoR <[email protected]> wrote:
>
>
>
> > On Apr 3, 10:37 am, Tom Occhino <[email protected]> wrote:
>
> > > I think we should probably tweak match to return false as the base  
> > > case... If you pass no selector or an undefined / null selector, it  
> > > would make sense to return false imo..
>
> > +1

Reply via email to