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

我正在尝试选择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]')。(但在名称属性中具有[])。

112062 次浏览

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

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

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

如果要检查两个属性(此处为:namevalue):

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

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

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

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

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

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

编辑固定bogosity;谢谢@dancrumb

根据jQuery文档,尝试以下操作:

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

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

$('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\\]

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

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

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

jQuery:

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