我正在使用jQuery动态添加包含几个字段的新div。 我在这个输出示例中添加了新的曲调:
<div id="uploadedTunes">
<div class="tune">
Title:<input type="text" name="Title">
Length:<input type="text" name="Length">
</div>
<div class="tune">
Title:<input type="text" name="Title">
Length:<input type="text" name="Length">
</div>
</div>
有没有办法只序列化div uploadTunes中的字段(而不是整个表单)? 我如何序列化这个,所以我有一个这样的数组:
uploadedTunes { 调{ 标题=“高速公路到地狱”, 长度= “03:01” } }
感谢您的帮助或线索!
答案 0 :(得分:2)
在#uploadedTunes上使用serializeArray()。
例如:
jQuery.ajax({
data : jQuery.param(jQuery(this).serializeArray()),
dataType : 'script',
type:'post',
url:'/path/to/somewhere'
});
我不确定它是否适用于除表格之外的其他内容。
答案 1 :(得分:2)
DEMO: http://jsbin.com/aneme/4/edit
包括jquery json lib
http://jquery-json.googlecode.com/files/jquery.json-1.3.min.js
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
$(function() {
//define the array
var tune = [];
//start looping
$('#uploadedTunes .tune').each(function(i , e) {
//automatically add to each pair of tune elements an equal class name
$(this).children().attr('class','tune_'+i);
//create and convert the array to JSON
tune.push( $.toJSON( $('.tune_'+i).serializeObject() ) );
});
//join all tunes into one comma separated sting
var uploadedTunes = tune.join(",");
alert( uploadedTunes );
});
注意强>: 大多数人认为 serializeArray()仅适用于 FORM ,这不完全正确,它也可以通过给每个要序列化相同类的元素而无形式地工作!然后序列化这个类而不是形式!