ссылаясь на поле ввода html, содержащее имя массива в jquery [duplicate]

Для UBUNTU вы можете попробовать следующую команду, чтобы проверить версию mysql:

mysql --version
62
задан Mike Trpcic 6 August 2009 в 15:04
поделиться

7 ответов

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

alert($("#something\\["+id+"\\]").parent().parent().attr("id"));

См. Специальные символы в селекторах , в частности второй абзац:

Чтобы использовать любой из метасимволов ( такой как !"#$%&'()*+,./:;<=>?@[\]^``{|}~) как буквальная часть имени, он должен быть экранирован двумя обратными косыми чертами: \\. Например, элемент с id="foo.bar" может использовать селектор $("#foo\\.bar"). Спецификация CSS W3C содержит полный набор правил относительно правильных селекторов CSS . Также полезной является запись в блоге Матиаса Биненса в escape-последовательности символов CSS для идентификаторов .

86
ответ дан Rory McCrossan 20 August 2018 в 18:32
поделиться
  • 1
    специальное (мета) описание символа теперь находится во втором абзаце на странице, указанной в сообщении karim 79 – Keith K 11 June 2010 в 14:52
  • 2
    @KKirk - спасибо за это. – karim79 11 June 2010 в 22:42

Вы также можете сделать

$('[id="something['+id+']"]')
7
ответ дан Community 20 August 2018 в 18:32
поделиться

«Любой из метасимволов

!"#$%&'()*+,./:;<=>?@[\]^`{|}~

как буквальная часть имени, он должен быть экранирован с двумя обратными косыми чертами: \\.

Например , элемент с id = "foo.bar", может использовать селектор

$("#foo\\.bar")

"[источник: jquery doc ], а элемент с id =" foo [ bar] "(даже если он недействителен для W3C, но распознан JQuery), можно использовать селектор

$("#foo\\[bar\\]")

(Только один asnwer, как и многие другие, но все вместе:))

3
ответ дан Elvis Ciotti 20 August 2018 в 18:32
поделиться

Вы можете избежать их с помощью \\, или вы можете сделать что-то вроде этого ...

$(document.getElementById("something[" + id + "]"))
3
ответ дан Josh Stodola 20 August 2018 в 18:32
поделиться

Квадратные скобки имеют особое значение для селекторов jQuery , специальные фильтры атрибутов.

Просто выйдите из них, и он найдет ваш элемент в порядке

$( "#something\\[" + id + "\\]" )
9
ответ дан Paolo Bergantino 20 August 2018 в 18:32
поделиться

Идентификатор не может включать квадратные скобки. Это запрещено спецификацией .

Некоторые браузеры могут исправить ошибки и справиться, но вы должны исправить ваши данные вместо того, чтобы пытаться справиться с плохими данными.

9
ответ дан Quentin 20 August 2018 в 18:32
поделиться
  • 1
    Спасибо за ссылку на спецификацию. Я понимаю, что они не являются достоверными идентификаторами, но Rails добавляет их для удобства в контроллер. – Mike Trpcic 6 August 2009 в 15:29
  • 2
    Не только рельсы - многие веб-приложения используют этот трюк, так как он позволяет обработчику формы перебирать массив через массив, а не гадать количество необязательных строк, которые были отправлены. – Bryan Agee 23 April 2013 в 01:30
  • 3
    @BryanAgee - id s не name s, а большинство библиотек обработчиков форм используют подсчет для итерации, хотя несколько элементов управления с тем же именем, а не специальные соглашения об именах или гадание. – Quentin 23 April 2013 в 05:59
  • 4
    @BryanAgee - Нет, нет. Значение атрибута name не является маркером NAME. – Quentin 23 April 2013 в 16:25
  • 5
    Начиная с HTML5 это уже не так. w3.org/TR/html5/dom.html#the-id-attribute . – Jiloc 7 September 2015 в 17:47

Попробуйте следующее:

alert($("#something\\["+id+"\\]").parent()[0].parent()[0].attr("id"));
4
ответ дан Tim S. Van Haren 20 August 2018 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: