2011-05-24 4 views
3

Учитывая дом элемент:JQuery: спасаясь плюса в селекторе

<li id="foo+bar"></li> 

Я хочу, чтобы решить этот элемент (с помощью JQuery, если это возможно), и я стараюсь:

$("#foo+bar") 

, и я также пытался также избежать его:

$("#foo\+bar") 

.. ни, кажется, работает, потому что (я предполагаю, что) Jquery не может обрабатывать знак плюс, кажется. К сожалению, у меня нет возможности изменить значение id, поэтому:

Есть ли способ заставить jQuery получить правильный dom или как я могу подойти к этой проблеме?

+3

Вы забыли поставить '#' перед идентификационным именем? – namuol

+0

См. Также http://stackoverflow.com/questions/739695/jquery-selector-value-escaping – kennytm

+0

C'mon, ребята, это ** [в FAQ jQuery] (http://docs.jquery.com/Frequently_Asked_Questions # How_do_I_select_an_element_by_an_ID_that_has_characters_used_in_CSS_notation.3F). ** –

ответ

9

Попробуйте убежать с помощью двух обратных косых черт.

$("#foo\\+bar") 
+0

Это работает. http://jsfiddle.net/QpRN5/ –

+0

работает отлично, спасибо .. и да, Мэтт Болл, это в FAQ jQuery. Я вижу это, извините, я его не нашел первым. – mikkelbreum

+0

Имейте в виду, что код ** escape ** находится в разделе «Вопросы и ответы», он не указывает конкретно на ваш '+', но он (явно явно!) Ссылается на фактические действительные ID-проблемы, такие как ': 'и' .'. – Nanne

1

Я не верю + является допустимым символом в id.

идентификатор и имя маркеры должны начинаться с буквы ([A-Za-Z]) и может следовать любым количеством букв, цифр ([0-9]), дефис ("- "), подчеркивания (" _ "), двоеточия (": ") и периоды (". ").

http://www.w3.org/TR/html401/types.html#type-name

+1

Это хорошо в HTML5. –

+0

@Matt хорошая точка –

6

Ну, проблема, вероятно, что + там быть не должно.

HTML 4 specification говорит:

ID и NAME маркеры должны начинаться с буквы ([A-Za-Z]) и может следовать любое количество букв, цифр ([0-9]), дефисы («-»), подчеркивания («_»), двоеточия («:») и периоды («.»).

Таким образом, любое обходное решение по-прежнему основано на ошибочном запуске, поэтому может прекратить работу в любое время. Вы действительно должны изменить этот идентификатор.

+0

Это хорошо в HTML5. Для селектора jQuery http://stackoverflow.com/questions/6115636/jquery-escaping-plus-sign-in-selector/6115667#6115667 –

+0

Это может быть так, поэтому в HTML5 будет ситуация, которая была бы крутой. Насколько я знаю, HTML5, хотя и дико используется для удовольствия, пока не является готовой спецификацией, я бы советовал с этим кодировать. – Nanne

+0

yes the + действительно не должно быть thre, но я не контролирую это. – mikkelbreum

Смежные вопросы