jquery转义方括号来选择元素

时间:2011-12-06 17:20:45

标签: javascript jquery regex jquery-selectors escaping

考虑一个输入元素

<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());

您的建议会有所帮助!

6 个答案:

答案 0 :(得分:6)

以下内容应该有效:

alert($('#meta\[152\]\[value\]').val());

var id = "#meta\[152\]\[value\]";
alert($(id).val());

Working Example

转化功能:

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)

嗯,只需将转义值放在字符串中即可。

var id = "#meta\\[152\\]\\[value\\]";

See it working here

答案 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' />