6

我正在开发一个在 id 参数中使用方括号的遗留系统。例如:

<select id="mySelect[]">
  <option value="1">Yadda</option>
  <option value="2">Yadda</option>
  <option value="3">Yadda</option>
</select>

当我尝试在其中使用这个 id 时,jQuery(作为 javaScript)非常正确地抱怨,比如说,

$("#mySelect[]").append(options);

鉴于我无法更改遗留代码,因此我被现有的 id 所困扰(这在任何情况下都可能有效也可能无效),什么是解决这种混乱并让我选择的好方法我的元素?

4

3 回答 3

11

使用元字符时,您必须转义这些字符。

$("#mySelect\\[\\]").append(options);

Jquery 选择器文档说

要使用任何元字符(例如 !"#$%&'()*+,./:;<=>?@[]^`{|}~ )作为名称的文字部分,它必须用两个反斜杠转义:\。

如果不想转义,可以使用选择器

$( document.getElementById('mySelect[]')
于 2013-07-09T15:24:28.943 回答
10

试试这个方法:

$("#mySelect\\[\\]").append(options);

您需要转义[]因为它们是选择器中使用的保留 jquery 字符。

看看 jquery文档

要使用任何元字符(例如 !"#$%&'()*+,./:;<=>?@[]^`{|}~ )作为名称的文字部分,它必须用两个反斜杠转义:\。例​​如,id="foo.bar" 的元素可以使用选择器 $("#foo\.bar")。

和这里的小提琴

另外当然你可以这样做$('[id="mySelect[]"]')但是因为它是一个属性选择器性能明智这会变慢并且你失去了使用 id 选择器的优势,但是如果你无法逃避字符,它会很方便。

于 2013-07-09T15:23:55.763 回答
3

试试这个jsfiddle 链接

以下两个都可以正常工作:

console.log($('[id^=mySelect]'));
console.log($('#mySelect\\[\\]'));
于 2013-07-09T15:31:35.180 回答