考虑一个输入元素
<input id="meta[152][value]" type="text" />
此处输入字段是动态生成的。我需要选择那个字段。所以我用了,
alert($('#meta[152][value]').val());
但这似乎无效。搜索后我发现,“方括号”需要像#meta\\[152\\]\\[value\\]
那怎么办呢? 我目前使用此代码,
var id = "#meta[152][value]" // (I get this value by another method) I need the escaping to be done here. So that i can use as
/ **我需要使用正则表达式,替换或任何其他方法来转义id的值 获得#meta \ [152 \] \ [value \] 而不是手动** /
alert($(id).val());
您的建议会有所帮助!
答案 0 :(得分:6)
以下内容应该有效:
alert($('#meta\[152\]\[value\]').val());
或
var id = "#meta\[152\]\[value\]";
alert($(id).val());
转化功能:
function ConvertValue(id)
{
var test = id.replace(/[[]/g,'\\\\[');
return "#" + test.replace(/]/g,'\\\\]');
}
<强> Conversion Example 强>
答案 1 :(得分:6)
如果您在不逃避的情况下感觉更舒服,也可以使用属性选择器并搜索具有该ID的元素,如下所示:$("[id='meta[152][value]']")
答案 2 :(得分:3)
最简单的方法就是使用常规的getElementById,它不需要转义:
document.getElementById("meta[152][value]").value;
答案 3 :(得分:1)
这个shoudl为你工作,你几乎拥有它:
$(document).ready(function() {
var id = "#meta\\[152\\]\\[value\\]";
alert($(id).val());
});
答案 4 :(得分:0)
答案 5 :(得分:0)
您可以使用Lodash库中的_.escapeRegExp
方法。
console.log($('#' + _.escapeRegExp('meta[152][value]')).val());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
<input id="meta[152][value]" type="text" value='Test' />