Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jquery selector doesnt accept pipe character |?

I have an html ID I'm trying to call. It has a specific name build like this name_|_anyting but when I try to get the elemetn using Jquery's selectors I get an error

$("#name_|_anyting")

Error: Syntax error, unrecognized expression: |_anyting

so my question is : Are pipe characters not allowed as Ids in jquery selectors ?

like image 440
user878844 Avatar asked Sep 06 '12 18:09

user878844


2 Answers

Pipe character "|" has to be escaped using double backslashes.

Selectors

Borrowing from CSS 1–3, and then adding its own, jQuery offers a powerful set of tools for matching a set of elements in a document.

If you wish to use any of the meta-characters ( such as !"#$%&'()*+,./:;<=>?@[]^`{|}~**** ) as a literal part of a name, you must escape the character with two backslashes: \\. For example, if you have an element with id="foo.bar", you can use the selector $("#foo\\.bar"). The W3C CSS specification contains the complete set of rules regarding valid CSS selectors. Also useful is the blog entry by Mathias Bynens on CSS character escape sequences for identifiers.

http://api.jquery.com/category/selectors/

like image 81
AshokD Avatar answered Oct 24 '22 08:10

AshokD


| is a special character in selector syntax, which means you can't use it directly in an ID selector. If you cannot change the ID in your markup to accommodate your selector, you'll have to make do with escaping the selector to trick jQuery into selecting the element anyway:

$("#name_\\|_anything")
like image 20
BoltClock Avatar answered Oct 24 '22 09:10

BoltClock