2

Я хочу, чтобы выбрать поле ввода, который имеет следующую ID:переменная селектора атрибутов jquery, содержащая цитату?

id="Peoples' Choice"

Если я вручную ввести в селекторе с экранирующих символов, он работает:

$("[id='Peoples\\' Choice']")

Но если я используйте переменную, она не работает:

var theID = "Peoples' Choice"; 
var sel = "[id='" + theID + "']" 
chk = $(sel); 

Это извергает синтаксическая ошибка, указывающая непризнанное выражение. Я даже попытался заменить цитату в theID с двойным обратным слэшем + цитатой.

Помощь?

ответ

6

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

Вы можете использовать следующее регулярное выражение:

var sel = "[id='" + theID.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g,'\\$1') + "']" 

DEMO

+0

Это работает для вашего примера, но он терпит неудачу, когда в ID есть пробел :(Возможно, это неправильный HTML, но есть ли способ справиться с этим фрагментом? – ForeverLearnNeverMaster

+0

Я обновил скрипку, он работает как хорошо с пробелами ... Хотя пробелы недопустимы в идентификаторах, поэтому их не должно быть. –

+0

Да, это работает. Спасибо. – ForeverLearnNeverMaster

4

id s не может иметь пробелов в нем. Просто используйте peoples-choice.
От w3, http://www.w3.org/TR/html4/types.html

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

+0

Ну, видимо, существующая система, в которой я работаю, может иметь это:/Может быть, jquery не наплевать на это? – ForeverLearnNeverMaster

+0

Они не могут, проверьте http://mathiasbynens.be/notes/html5-id-class – Matijs

+1

Недействительно html. Просто используйте «народ-выбор». См. Править. – elclanrs

1

мы не можем поставить (') в ид но вы можете попробовать это

попробовать этот

var theID = "Peoples\' Choice"; 
var sel = "[id='" + theID + "']" 
chk = $(sel); 

вместо

var theID = "Peoples' Choice"; 
var sel = "[id='" + theID + "']" 
chk = $(sel); 
Смежные вопросы