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

时间:2010-03-02 16:57:06

标签: javascript jquery input jquery-selectors

我正在尝试选择名称属性中包含方括号的元素:

<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 个答案:

答案 0 :(得分:243)

根据jQuery documentation,试试这个:

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

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

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

答案 1 :(得分:75)

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

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

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

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

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

编辑固定的博居;谢谢@Dancrumb

答案 2 :(得分:50)

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

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

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

如果您想检查两个属性(此处:namevalue):

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

答案 3 :(得分:6)

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

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\\]

在这种情况下,我们在所有特殊字符前加上双反斜杠。

答案 4 :(得分:0)

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

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

jQuery:

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