文本输入的名称具有数组样式(name="post2")。我需要在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
发布于 2013-04-24 17:53:03
简短的回答:
无需扩展jQuery的选择器,您就可以使用jQuery的contains
选择器:http://api.jquery.com/attribute-contains-selector/
像这样
$('input[name*="["][name*="]"]')
翻译成英文,意思是告诉我名称中包含[
和]
的input
__s
长长的答案:
简单的答案应该是足够的。
但仅供参考..。
重复使用[name...]
是因为一个缺点,我们不能在这样的选择器中使用通配符。
另一个缺点是它们没有定义严格的发生顺序。例如,还将匹配post]1[
的名称。
如果确实需要确保名称具有正确的字符串模式,可以扩展jQuery的选择器来执行Regex操作,以实现更严格的选择规则。
这里有一个很好的例子:http://james.padolsey.com/javascript/regex-selector-for-jquery/
https://stackoverflow.com/questions/16198375
复制