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

aid*_*dan 175 javascript jquery input jquery-selectors

我正在尝试选择name属性中带方括号的元素:

<input type="text" name="inputName[]" value="someValue">
Run Code Online (Sandbox Code Playgroud)

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

$('input[inputName[]=someValue]')
Run Code Online (Sandbox Code Playgroud)

这两个都没有:

$('input[inputName&#91;&#93;=someValue]')
Run Code Online (Sandbox Code Playgroud)

或这个:

$('input["inputName[]"=someValue]')
Run Code Online (Sandbox Code Playgroud)

编辑:正如你们有些人指出的那样,$('input[inputName=someValue]')永远不会奏效.我想做的是:$('input[name=inputName][value=someValue]').(但[]在name属性中).

Dan*_*umb 254

根据jQuery文档,试试这个:

$('input[inputName\\[\\]=someValue]')
Run Code Online (Sandbox Code Playgroud)

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

$('input[name="inputName[]"][value="someValue"]')
Run Code Online (Sandbox Code Playgroud)

  • 接得好.需要两个反斜杠的原因是因为单个反斜杠被解释为JavaScript字符串转义字符,所以你需要两个来指定一个文字反斜杠,它为选择器提供了转义符...啊,多个级别的字符的乐趣逃跑. (31认同)

Poi*_*nty 76

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

$('#input\\[23\\]')
Run Code Online (Sandbox Code Playgroud)

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

$('input[name="weirdName[23]"]')
Run Code Online (Sandbox Code Playgroud)

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

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


Gum*_*mbo 51

属性选择语法[name=value]哪里name是属性名称,value是的属性值.

因此,如果要选择具有值input的属性的所有元素:nameinputName[]

$('input[name="inputName[]"]')
Run Code Online (Sandbox Code Playgroud)

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

$('input[name="inputName[]"][value=someValue]')
Run Code Online (Sandbox Code Playgroud)


Eri*_*thi 7

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

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\\]
Run Code Online (Sandbox Code Playgroud)

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