2013-12-21 6 views
3

У меня есть элемент вроде этого:Выберите элемент с знаком процента (%) в его идентификатору с JQuery

<a id="my%20id" href="#">hello</a> 

Я отчаянно пытается выбрать его с JQuery, но не может. Я пробовал:

$('a#my id')       // obviously won't work 
$('a#my\ id')       // no such luck 
$('a#my%20id')      // unrecognized expression 
$('a#my\%20id')      // still unrecognized 
$('a#' + encodeURIComponent('my id')) // same thing as 'a#my%20id' 

Можно ли вообще это выбрать с помощью jQuery?

+0

Вам не нужен a, если вы используете селектор ID ... Будет ли '# my% 20id' работать? – turtlepick

+0

Возможный дубликат [jquery IDs с пробелами] (http://stackoverflow.com/questions/596314/jquery-ids-with-spaces) – mc10

+0

@ mc10 Это не дубликат, потому что идентификатор был закодирован. Прежде чем он был закодирован, $ ('a # my \ id') работал нормально. – 2rs2ts

ответ

7

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

Live Demo

$('[id="my%20id"]') 
2

На самом деле вам нужно много спасаясь здесь:

$("#my\\%20id").text("HI"); 

\% не является действительным побег, вы хотите \\%, который будет бежать правильно и получить правильный идентификатор.

Вы можете проверить an example on jsFiddle.

+0

Это не сработало, но это может иметь какое-то отношение к моей среде, а не к общей правильности вашего ответа. Так что, несмотря на это, все равно. – 2rs2ts

3

Используйте надежные document.getElementById:

$(document.getElementById("my%20id")).text(); 

Performance должны быть лучше, чем использовать селектор атрибута, как вы полагаться на родной вызов метода, чтобы найти id. Это немного более многословно, чем другие решения, если это проблема.

+0

Я бы принял этот ответ, если бы две вещи были правдой: (1) Я не работал внутри iframe (d'oh !, но это слишком XY) и (2) я не просил об этом конкретно в jQuery. Но да, это отличный способ сделать это нормально. – 2rs2ts

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