如何在ID中选择带有特殊字符的元素?

时间:2017-07-04 08:16:31

标签: jquery html jquery-selectors

如果用“奇怪的名字”输入来模拟数组,我有一个包含很多网格的页面:

 <input type="text" id="Punteggi[@counter].Descrizione" readonly="readonly" tabindex="-1" name="Punteggi[@counter].Descrizione" class="{validate: {required:true}}" value="@item.Descrizione" /> 

如何使用jQuery设置这些输入的值,具体来说,我该如何选择它们?我尝试了很多方法但没有任何作用。

2 个答案:

答案 0 :(得分:4)

问题是括号在CSS(作为属性选择器)中具有特殊含义,而点也作为类选择器具有特殊含义。试试$.escapeSelector

$('#' + $.escapeSelector('Punteggi[@counter].Descrizione'))

这将转义选择器,因此特殊字符不会影响选择。您还可以尝试使用属性选择器并将其包装在引号中:

$('[id="Punteggi[@counter].Descrizione"]')

这将完全匹配该ID,并且不会将任何特殊字符视为特殊字符。

答案 1 :(得分:0)

您需要转义[选择器中的]@.id个字符。为此,请使用\\,如下所示:

&#13;
&#13;
var val = $('#Punteggi\\[\\@counter\\]\\.Descrizione').val();

console.log(val);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="Punteggi[@counter].Descrizione" readonly="readonly" tabindex="-1" name="Punteggi[@counter].Descrizione" class="{validate: {required:true}}" value="@item.Descrizione" />
&#13;
&#13;
&#13;