Найдите элемент DOM идентификатором, когда идентификатор будет содержать квадратные скобки?

Блокировка прокрутки (по крайней мере, светодиод для него, так или иначе) используется наряду с Caps Lock и светодиод Num Lock для обеспечения кодов ошибки диагностики при поиске и устранении неисправностей аппаратных проблем на ноутбуках Dell. Это довольно полезно при поиске и устранении неисправностей проблем с дисплеем, которые могли бы препятствовать тому, чтобы сообщения диагностики были прочитаны от экрана.

72
задан TylerH 18 September 2019 в 14:43
поделиться

5 ответов

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

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

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

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

100
ответ дан 24 November 2019 в 12:39
поделиться

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

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

9
ответ дан 24 November 2019 в 12:39
поделиться

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

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

$( "#something\\[" + id + "\\]" )
9
ответ дан 24 November 2019 в 12:39
поделиться

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

alert($("#something\\["+id+"\\]").parent()[0].parent()[0].attr("id"));
4
ответ дан 24 November 2019 в 12:39
поделиться

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

$(document.getElementById("something[" + id + "]"))
3
ответ дан 24 November 2019 в 12:39
поделиться
Другие вопросы по тегам:

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