Переменная селектора атрибута jquery, которая содержит кавычку? - PullRequest
3 голосов
/ 15 февраля 2012

Я хочу выбрать поле ввода, которое имеет следующий идентификатор:

id="Peoples' Choice"

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

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

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

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

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

Справка?

Ответы [ 3 ]

9 голосов
/ 15 февраля 2012

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

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

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

DEMO

4 голосов
/ 15 февраля 2012

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

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

0 голосов
/ 15 февраля 2012

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

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

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

вместо

var theID = "Peoples' Choice";
var sel = "[id='" + theID + "']"
chk = $(sel);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...