[英]jQuery selector for inputs with square brackets in the name attribute
我试图选择这个在 name 属性中有方括号的元素:
<input type="text" name="inputName[]" value="someValue">
我试过这个(这不起作用):
$('input[inputName[]=someValue]')
这也不是:
$('input[inputName[]=someValue]')
或这个:
$('input["inputName[]"=someValue]')
编辑:正如你们中的一些人指出的那样, $('input[inputName=someValue]')
永远不会工作。 我想做的是: $('input[name=inputName][value=someValue]')
。 (但在名称属性中使用[]
)。
根据jQuery 文档,试试这个:
$('input[inputName\\[\\]=someValue]')
[编辑] 但是,我不确定这是否适合您的选择器的语法。 你可能想要:
$('input[name="inputName[]"][value="someValue"]')
您可以使用反斜杠在 jQuery 选择器中引用“有趣”的字符:
$('#input\\[23\\]')
对于属性值,您可以使用引号:
$('input[name="weirdName[23]"]')
现在,我对你的例子有点困惑; 你的 HTML 到底是什么样子的? 特别是字符串“inputName”出现在哪里?
编辑固定的笨重; 谢谢@Dancrumb
属性选择器语法是[name=value]
,其中name
是属性名称, value
是属性值。
因此,如果要选择属性name
为inputName[]
所有input
元素:
$('input[name="inputName[]"]')
如果您想检查两个属性(此处: name
和value
):
$('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">
查询:
var value = $('input[name="myName[1][data]"]').val();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.