Hi, I've discover that IDs containing plus sign (+) are also bad, so I
would suggest escaping plus as well.

On Apr 23, 5:08 pm, HissingInfernoOfAudio <rono.mu...@gmail.com>
wrote:
> Hi,
> I've stumbled onto the case in which we want to perform a selector
> find on an element with a period in its id:
> $('my_mail_google.com').down('img')
> and the result is null, since Selector.findElements alters the
> selector for the selector API by inserting
> # and the id into the selector, resulting in the new selector:
> '#my_mail_google.com img'
> which of course looks for an img element under an element with id
> 'my_mail_google' and class 'com'.
>
> In short, findElements is missing an escaping for the id. Here's a
> revised code:
>   findElements: function(root) {
>     root = root || document;
>     var e = this.expression, results;
>
>     switch (this.mode) {
>       case 'selectorsAPI':
>         // querySelectorAll queries document-wide, then filters to
> descendants
>         // of the context element. That's not what we want.
>         // Add an explicit context to the selector if necessary.
>         if (root !== document) {
>           var oldId = root.id, id = $(root).identify();
>           e = "#" + id.replace(/\./, '\\.') + " " + e;
>         }
>
>         results = $A(root.querySelectorAll(e)).map(Element.extend);
>         root.id = oldId;
>
>         return results;
>       case 'xpath':
>         return document._getElementsByXPath(this.xpath, root);
>       default:
>        return this.matcher(root);
>     }
>   },
>
> Thanks!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to prototype-core@googlegroups.com
To unsubscribe from this group, send email to 
prototype-core-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to