jQuery .val()在复杂id处返回undefined

时间:2012-08-20 13:19:10

标签: jquery undefined

我有两个隐藏的输入字段:

<input type="hidden" name="institut" id="institut" value="blablub" />
<input type="hidden" name="institut[0]" id="institut[0]" value="moreblablub" />

我有这个调试代码:

console.log("#institut: " + $("#institut").val());
console.log("#institut[0]: " + $("#institut[0]").val());

我得到了这个控制台输出:

#institut: blablub
#institut[0]: undefined

我试图用反斜杠逃避方括号,但没有改变任何东西。有没有办法获得复杂的ID?

3 个答案:

答案 0 :(得分:8)

您应为ID使用非字母数字字符。

但如果你这样做,你可以这样做:

var element = document.getElementById("institut[0]");
var $element = $(element);

演示:http://jsfiddle.net/maniator/sWnJN/

或者

var $element = $("#institut\\[0\\]");

演示:http://jsfiddle.net/maniator/sWnJN/1/

甚至:

var $element = $("[id='institut[0]']");

演示:http://jsfiddle.net/maniator/sWnJN/2/

答案 1 :(得分:2)

你必须逃避括号:

$( '#institut\\[0\\]' ).val()

现场演示: http://jsfiddle.net/Qsagn/

括号是CSS中的特殊字符 - 它们定义属性选择器。你需要双重转义括号。单个转义\[是不够的,因为\字符是字符串文字中的特殊字符,因此您需要\\才能转义\字符,以便它被解释为文字字符。

答案 2 :(得分:1)

您始终可以使用document.getElementsByName("institut[0]")[0].value