文本输入具有带数组样式的名称(name =“post [2] [id]”)。我需要在jQuery脚本中使用此结构名称获取此值。这样我就可以像普通数组一样工作。
$(document).ready(function(){
var data = {};
data['post'] = {};
var fields = $("#user input");
$.each(fields, function(index, field) {
data[$(field).attr('name')] = $(field).val();
});
console.log(data);
});
<div id="user">
<input type="text" name="name" value="Joy" />
<input type="text" name="post[1][id]" value="2" />
<input type="text" name="post[1][name]" value="test" />
<input type="text" name="post[2][id]" value="3" />
<input type="text" name="post[2][name]" value="test 2" />
</div>
现在我的名字在数据变量中添加了字符串,所以这非常糟糕。 我需要这个:
alert(data.post.1.id) // 2
答案 0 :(得分:2)
简短回答:
如果不扩展jQuery的选择器,您可以使用jQuery的contains
选择器:http://api.jquery.com/attribute-contains-selector/
喜欢这个
$('input[name*="["][name*="]"]')
将其翻译成英文,这意味着,向我提供名称中包含input
和[
的]
答案很长:
简短的回答应该是务实的。
但仅供参考......
[name...]
的重复使用是因为一个缺点,我们不能在这样的选择器中使用通配符。
另一个缺点是他们没有定义严格的发生顺序。例如。名称post]1[
也将匹配。
如果确实需要确保名称具有正确的字符串模式,则可以扩展jQuery的选择器以执行更严格的选择规则的正则表达式操作。
这是一个很好的:http://james.padolsey.com/javascript/regex-selector-for-jquery/