<input type="text" name="inputName[]" value="someValue">
我已经尝试过(不起作用):
$('input[inputName[]=someValue]')
,这也不是:
$('input[inputName[]=someValue]')
还是这个:
$('input["inputName[]"=someValue]')
编辑:正如你们中有些人指出的那样,
$('input[inputName=someValue]')
将永远无法工作。我想做的是:$('input[name=inputName][value=someValue]')
。 (但name属性中带有[]
)。#1 楼
根据jQuery文档,请尝试以下操作:$('input[inputName\[\]=someValue]')
[EDIT]
但是,我不确定这是否是您选择器的正确语法。您可能想要:
$('input[name="inputName[]"][value="someValue"]')
#2 楼
您可以使用反斜杠在jQuery选择器中引用“有趣”字符:$('#input\[23\]')
对于属性值,可以使用引号:
$('input[name="weirdName[23]"]')
现在,您的榜样让我有些困惑;您的HTML到底是什么样的?特别是字符串“ inputName”在哪里显示?
编辑固定bogosity;谢谢@Dancrumb
评论
我无法使用$('select [name = foo \\ [bar \\]]')选择(巧合一个选择标记)
#3 楼
属性选择器语法为[name=value]
,其中name
是属性名称,value
是属性值。因此,如果要选择所有具有属性
input
的name
元素,且其属性值为inputName[]
:$('input[name="inputName[]"]')
如果要检查两个属性(此处:
name
和value
):$('input[name="inputName[]"][value=someValue]')
#4 楼
如果选择器包含在变量中,则以下代码可能会有所帮助:selector_name = $this.attr('name');
//selector_name = users[0][first:name]
escaped_selector_name = selector_name.replace(/(:|\.|\[|\])/g,'\');
//escaped_selector_name = users\[0\]\[first\:name\]
在这种情况下,我们为所有特殊字符加上双反斜杠。
评论
selector.replace(/([[]] / g,'\\\\ $ 1');对我来说效果更好一点,因为它添加了转义斜杠并产生两个而不是一个转义斜杠...
– Fydo
13年2月2日在3:12
@Fydo只记得您还需要转义其他字符,包括冒号,句号
–埃里克·基加西(Eric Kigathi)
2014年11月28日23:35
#5 楼
只需用不同的引号将其分开:<input name="myName[1][data]" value="myValue">
var value = $('input[name="myName[1][data]"]').val();
评论
接得好。需要两个反斜杠的原因是,因为单个反斜杠被解释为JavaScript字符串转义字符,所以您需要两个反斜杠来指定文字反斜杠,从而为选择器提供转义字符...啊,多层次字符的乐趣转义。
–彼得
10 Mar 2 '10 at 17:04
谢谢你这只是使用正则表达式的问题。将表单数据直接提交到您喜欢的视图框架内的数组或列表时,这非常有用。这也帮助我回答了有关删除具有多个主键元素的对象的问题。 ;)
–路易斯·费琼·韦罗内西(LuizFeijãoVeronesi)
14-10-23在15:12