繁体   English   中英

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

[英]jQuery selector for inputs with square brackets in the name attribute

我试图选择这个在 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]') (但在名称属性中使用[] )。

根据jQuery 文档,试试这个:

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

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

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

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

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

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

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

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

编辑固定的笨重; 谢谢@Dancrumb

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

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

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

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

$('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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM