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

时间:2013-07-09 15:23:22

标签: javascript jquery html dom jquery-selectors

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

<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(在任何上下文中可能有效,也可能无效),这将是一件好事。解决这个烂摊子的方法让我选择我的元素?

3 个答案:

答案 0 :(得分:11)

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

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

Jquery selector docs saying that

  

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

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

$( document.getElementById('mySelect[]')

答案 1 :(得分:10)

尝试这种方式:

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

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

查看jquery docs

  

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

和小提琴 here

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

答案 2 :(得分:3)

试试这个jsfiddle link

以下两项工作正常:

console.log($('[id^=mySelect]'));
console.log($('#mySelect\\[\\]'));