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

Jen*_*ell 1 javascript css jquery css-selectors

HTML

<input name="single">

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

<input name="multi_keys[my]">
<input name="multi_keys[key]">
Run Code Online (Sandbox Code Playgroud)

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

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

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

我能做到这一点:

var match_multi       = $('[name="multi[]"]');
Run Code Online (Sandbox Code Playgroud)

但是当里面有钥匙并且它们未知时我怎么能匹配?我想这样写:

$('[name="multi_keys*');
Run Code Online (Sandbox Code Playgroud)

Jam*_*lly 5

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

$('[name^="multi"]')
Run Code Online (Sandbox Code Playgroud)

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

$('[name^="multi["]')
Run Code Online (Sandbox Code Playgroud)

...和:

$('[name^="multi_keys["]')
Run Code Online (Sandbox Code Playgroud)

[att^=val]

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

- W3C的选择器规范