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