jquery转义方括号来选择元素

发布于 2024-12-19 23:29:55 字数 616 浏览 1 评论 0原文

考虑一个输入元素

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

您的建议将会很有帮助!

Consider a input element

<input id="meta[152][value]" type="text" />

Here the input field is dynamically generated. I need to select that field. So I used,

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

But this seems to be invalid. After searching I found, that the "square brackets" need to be escaped like #meta\\[152\\]\\[value\\]

So how to do that ?
I currently use this code,

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

/** I need the value of id to be escaped using regex,replace or any other method
to get #meta\[152\]\[value\]
and not manually **/

alert($(id).val());

Your suggestions will be helpful !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

忆离笙 2024-12-26 23:29:55

以下内容应该有效:

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,'\\\\]'); 
}

转换示例

The following should work:

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

or

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

Working Example

Conversion Function:

function ConvertValue(id)
{
    var test = id.replace(/[[]/g,'\\\\[');
    return "#" + test.replace(/]/g,'\\\\]'); 
}

Conversion Example

违心° 2024-12-26 23:29:55

如果您觉得不转义更舒服,您还可以使用属性选择器并搜索具有该 id 的元素,如下所示:$("[id='meta[152][value]']")

If you feel more comfortable without escaping you also use the attributes selector and search for the element with that id like this: $("[id='meta[152][value]']")

眼泪也成诗 2024-12-26 23:29:55

最简单的方法就是使用常规的 getElementById,不需要转义:

document.getElementById("meta[152][value]").value;

The simplest way is just to use the regular getElementById, which requires no escaping:

document.getElementById("meta[152][value]").value;
玉环 2024-12-26 23:29:55

这应该对你有用,你几乎已经拥有它了:

    $(document).ready(function() {
       var id = "#meta\\[152\\]\\[value\\]";
        alert($(id).val()); 
    });

this shoudl work for you, you almost had it:

    $(document).ready(function() {
       var id = "#meta\\[152\\]\\[value\\]";
        alert($(id).val()); 
    });
故事还在继续 2024-12-26 23:29:55

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

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

在这里查看它的工作情况

Um, just put the escaped value right in your string.

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

See it working here

伴随着你 2024-12-26 23:29:55

您可以使用 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' />

You can use the _.escapeRegExp method from the Lodash library.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文