Селектор jquery не работает с [] - PullRequest
0 голосов
/ 28 января 2011

Я использую jQuery для управления данными формы в экземпляре osCommerce, и у меня возникают проблемы при выборе некоторых элементов.

Сценарий генерирует текстовые области с идентификатором product_description [N], где N равно 1, 2, 3 ...

Проблема в том, что наличие значения id с [] делает jQuery (даже обычный скрипт) не для выбора элемента, и я не могу с ним работать.

Я пытался переключить идентификатор на подчеркивание, манипулировать информацией и затем изменить ее обратно на [], но я даже не могу сделать:

$('#product_description[1]').attr('id','products_description_1');

Есть ли способ заставить jQuery выбрать что-то вроде этого $('#some [2]'). function ...?

Если нет, если есть другой способ изменить значение идентификатора, тогда все в порядке, потому что я могу работать как обычно, а затем изменить его обратно на[] чтобы php распознал это поле

Да, я знаю, я могу выбрать текстовую область другим способом, например, по классу, но, поскольку на странице есть много текстовых областей, мне нужно уникальное имя, и этотребуется редактирование скрипта osCommerce, который яне хочуЯ планирую предоставить свой JS сообществу oscommerce, а другому человеку просто добавить .js - это легко, но если ему нужно отредактировать php-файл для работы javascript, это может быть слишком пугающим для новичка или невозможным для кого-то другого.который уже отредактировал его.

Большое спасибо

Ответы [ 3 ]

2 голосов
/ 28 января 2011

Символы [] не являются действительными символами ID в HTML4.Не ожидайте последовательных результатов в разных браузерах, если вы их используете.


РЕДАКТИРОВАТЬ:

Если вы просто не можете контролировать формат идентификаторов нана стороне сервера, вы можете сделать это:

$("*[id='product_description[1]']")

, но это будет ужасно медленно в браузерах, которые не поддерживают querySelectorAll.

(Обратите внимание, что вы не должны '* здесь нужно \\ из-за кавычек вокруг значения.)

2 голосов
/ 28 января 2011
$("#product_description\\[1\\]").attr("id", "products_description_1");

- правильный код, посмотрите на " ID-Selector " на jQuery.com

1 голос
/ 28 января 2011

Попробуйте это:

$('#product_description\\[1\\]')

Обратите внимание, что хотя это может работать, символы скобок недопустимы для использования в идентификаторах до HTML5 (хотя они подходят для использования в классах).

...