可能重复:
Find DOM element by ID when ID contains square brackets?
我无法获得有点疯狂的表单元素的值。例如,我有一个HTML表单元素,其“必须”具有名称“data[User][notify_one_day_out]
”。问题是我无法获得表单元素的值。
<label for="data[User][notify_one_day_out]">One day away:</label>
<select name="slider" id="data[User][notify_one_day_out]" data-role="slider">
<option value="0">OFF</option>
<option value="1" selected="selected">ON</option>
</select>
然而
alert( $("#data[User][notify_one_day_out]").val());
出现未定义。有什么帮助吗?
答案 0 :(得分:3)
以\\
$("#data\\[User\\]\\[notify_one_day_out\\]")
答案 1 :(得分:2)
您必须转义括号:jsFiddle
alert( $("#data\\[User\\]\\[notify_one_day_out\\]").val());
RegExp的一个反斜杠,用于Javascript以逃避反斜杠;)
jQuery使用sizzle作为选择器引擎,它由一些非常高科技的正则表达式提供支持。
编辑 nnnnnn:我不是jQuery内部工作的专家,但遵循源代码中的面包屑确实看起来像RegExps给我
1)jQuery调用$.fn.init(selector)
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
}
2)在所有特殊情况发生后,init
使用quickExpr.exec( selector )
init: function( selector, context, rootjQuery ) {
...
match = quickExpr.exec( selector );
3)quickExpr
似乎进入RegExp的土地,在此之后我不知道另一方出现了什么碎片。
quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/
答案 2 :(得分:1)
$(document.getElementById('data[User][notify_one_day_out]')).val()
答案 3 :(得分:0)
尝试使用\用ecsaping 我确实记得这样的事情
更新
我想我们已经有了Cheery评论的解决方案
答案 4 :(得分:0)
您可能只有一个名为“slider”的选择,以便您可以使用属性等于选择器$('select[name="slider"]')
解决无效ID。