我有以下DOM结构..
<input id="WorkAssignmentID_3462" type="hidden" value="3462" name="WorkAssignmentID"/>
<input id="WorkItemID_3462" type="hidden" value="3633" name="WorkItemID"/>
<input id="EmployeeID_3462" type="hidden" value="15" name="EmployeeID"/>
<input id="AssignedBy_3462" type="hidden" value="Jonathan Erickson" name="AssignedBy"/>
<input id="AssignedDate_3462" type="hidden" value="8/1/2009 12:00:00 AM" name="AssignedDate"/>
<input id="ExpirationDate_3462" type="hidden" value="" name="ExpirationDate"/>
<input id="RegisteredDate_3462" type="hidden" value="8/1/2009 12:00:00 AM" name="RegisteredDate"/>
让我们说jQuery选择器来获取所有这些DOM元素如下:
$('#assignment');
我想要做的是从该集创建一个JSON对象:
var WA = {
WorkAssignmentID: '3462',
WorkItemID: '3633',
EmployeeID: '15',
AssignedBy: 'Jonathan Erickson',
AssignedDate: '8/1/2009 12:00:00 AM',
ExpirationDate: '',
RegisteredDate: '8/1/2009 12:00:00 AM',
};
最简单的方法是什么?
我正在考虑做这样的事情,但它不起作用,因为我认为你不能动态创建JSON对象的属性......是否可以动态创建属性名称?
var WA = {};
$('#assignment').each(function(idx, elem) {
$.extend(WA, {
$(elem).attr('name'): $(elem).val()
});
});
答案 0 :(得分:3)
如何使用bracket notation:
var result = {};
$('input[type=hidden]').each(function() {
result[this.name] = this.value;
});
答案 1 :(得分:2)
调用$ .extend()是过度的,IMO。但是你已经有了我使用的基本方法
var WA = {};
$('input[type="hidden"]').each( function( idx, elem )
{
WA[elem.name] = elem.value;
}