用于名称属性中带有方括号的输入的 jQuery 选择器

IT技术 javascript jquery input jquery-selectors
2021-01-15 22:57:51

我试图选择这个在 name 属性中有方括号的元素:

<input type="text" name="inputName[]" value="someValue">

我试过这个(这不起作用):

$('input[inputName[]=someValue]')

这也不是:

$('input[inputName&#91;&#93;=someValue]')

或这个:

$('input["inputName[]"=someValue]')

编辑:正如你们中的一些人指出的那样,$('input[inputName=someValue]')永远不会工作。我试图做的是:$('input[name=inputName][value=someValue]')(但[]在 name 属性中)。

5个回答

根据jQuery 文档,试试这个:

$('input[inputName\\[\\]=someValue]')

[编辑] 但是,我不确定这是否适合您的选择器的语法。你可能想要:

$('input[name="inputName[]"][value="someValue"]')
接得好。需要两个反斜杠的原因是因为单个反斜杠被解释为JavaScript字符串转义符,所以需要两个指定字面量的反斜杠,为选择器提供转义符……啊,多层次字符的乐趣逃跑。
2021-03-26 22:57:51
谢谢你。这只是使用正则表达式的问题。这在将表单数据直接提交到您喜欢的视图框架中的数组或列表时非常有用。这也帮助我回答了有关删除具有多个主键元素的对象的问题。;)
2021-04-01 22:57:51

您可以使用反斜杠在 jQuery 选择器中引用“有趣”的字符:

$('#input\\[23\\]')

对于属性值,您可以使用引号:

$('input[name="weirdName[23]"]')

现在,我对你的例子有点困惑;你的 HTML 到底是什么样子的?字符串“inputName”出现在哪里,特别是?

编辑固定的笨重;谢谢@Dancrumb

我不能够选择(巧合的是一个选择标签)<select name="foo[bar]">使用$('select[name=foo\\[bar\\]]'),但是我能够做到这一点使用$('select[name="foo[bar]"]),你的第二个建议。
2021-03-30 22:57:51
这个答案应该在顶部。它最简单。切换引号,它对我有用。谢谢
2021-04-03 22:57:51

属性选择器语法是[name=value]wherename是属性名称,value是属性值。

因此,如果要选择input属性name值为 的所有元素inputName[]

$('input[name="inputName[]"]')

如果你想检查两个属性(这里:namevalue):

$('input[name="inputName[]"][value=someValue]')

如果选择器包含在变量中,下面的代码可能会有所帮助:

selector_name = $this.attr('name');
//selector_name = users[0][first:name]

escaped_selector_name = selector_name.replace(/(:|\.|\[|\])/g,'\\$1');
//escaped_selector_name = users\\[0\\]\\[first\\:name\\]

在这种情况下,我们用双反斜杠作为所有特殊字符的前缀。

selector.replace(/([|])/g,'\\\\$1'); 对我来说效果更好一些,因为它添加了转义斜线并产生了两个,而不是一个转义斜线......
2021-03-18 22:57:51
@Fydo 请记住,您还需要转义其他一些字符,包括冒号、句点
2021-03-20 22:57:51

只需用不同的引号将其分开:

<input name="myName[1][data]" value="myValue">

查询:

var value = $('input[name="myName[1][data]"]').val();