选择具有异国情调ID的元素

Fra*_*een 6 html javascript jquery dom jquery-selectors

我正在研究在id参数中使用方括号的遗留系统.例如:

<select id="mySelect[]">
  <option value="1">Yadda</option>
  <option value="2">Yadda</option>
  <option value="3">Yadda</option>
</select>
Run Code Online (Sandbox Code Playgroud)

当我尝试使用这个id时,jQuery(正在javaScript)非常正确地抱怨

$("#mySelect[]").append(options);
Run Code Online (Sandbox Code Playgroud)

鉴于我无法更改遗留代码,因此我坚持使用现有的id(在任何上下文中可能有效,也可能无效),解决这个问题的好方法是让我选择我的元素?

Sur*_*tta 11

使用元字符时,你必须逃避这些.

$("#mySelect\\[\\]").append(options);
Run Code Online (Sandbox Code Playgroud)

Jquery选择器文档说

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

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

$( document.getElementById('mySelect[]')
Run Code Online (Sandbox Code Playgroud)


PSL*_*PSL 10

试试这种方式:

$("#mySelect\\[\\]").append(options);
Run Code Online (Sandbox Code Playgroud)

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

看看jquery 文档

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

和小提琴这里

加上当然你可以做到这一点$('[id="mySelect[]"]')但是因为它是一个属性选择器性能明智,这将更慢,你失去了使用id选择器的优势,但如果你无法逃避字符,方便.