jQuery css选择器匹配表单数组名称

时间:2017-04-12 13:02:20

标签: javascript jquery css css-selectors

HTML

<input name="single">

<input name="multi[]">
<input name="multi[]">

<input name="multi_keys[my]">
<input name="multi_keys[key]">

jQuery

var match_single      = $('[name="single"]');
var match_multi       = $('[name="multi"]'); // No match
var match_multi_keys  = $('[name="multi_keys"]'); // No match

console.log(match_single.length);
console.log(match_multi.length);
console.log(match_multi_keys.length);

它只会匹配match_single,因为其他选择器不正确。

如何使它们与表单字段数组匹配?

我可以这样做:

var match_multi       = $('[name="multi[]"]');

但是如果里面有钥匙并且他们不知道我怎么能匹配?我想这样写:

$('[name="multi_keys*');

3 个答案:

答案 0 :(得分:5)

您可以使用与属性开头匹配的^=

$('[name^="multi"]')

请注意,这将与 name="multi[]"name="multi_keys[]"匹配。如果您想单独选择multi[]multi_keys[],只需将方括号添加到该选择器即可:

$('[name^="multi["]')

...和

$('[name^="multi_keys["]')
  

[att^=val]

     

表示具有att属性的元素,其值以前缀“val”开头。如果“val”是空字符串,则选择器不代表任何内容。

     

- W3C's Selectors specification

答案 1 :(得分:0)

使用*之前的= $('[name*="multi"]');

&#13;
&#13;
var match_single = $('[name="single"]');
var match_multi = $('[name*="multi"]'); // No match
var match_multi_keys = $('[name*="multi_keys"]'); // No match

console.log(match_single.length);
console.log(match_multi.length);
console.log(match_multi_keys.length);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="single">

<input name="multi[]">
<input name="multi[]">

<input name="multi_keys[my]">
<input name="multi_keys[key]">
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以通过匹配输入名称的前缀来查询这些输入,例如$('[name^=multi_keys]'),这样它就会选择“namemulti_keys开头的元素。但这很糟糕。