序列化非表单元素

时间:2013-12-11 09:01:53

标签: jquery each

我正在尝试序列化一系列div中包含的数据。

经过一番研究后,我正在使用这个功能;

function save_values() {

var data = new Array();

$('.category-name').each(function() {
    data.push({ 'name':$(this).attr("name"), 'value':$(this).attr("id")});
});

alert(data);

};

我的div设置如下;

<div class = "category">
<div class = "category-number">
    <span>1.0</span>
<div class = "category-name">
    <span>Content</span>
</div>
</div>
</div>

<div class = "category">
<div class = "category-number">
    <span>2.0</span>
<div class = "category-name">
    <span>Content2</span>
</div>
</div>
</div>

我正在采用一种方法来有效地捕获category-name div中的内容,以及category-number div中的内容。我宁愿保留每个category-div的顺序和其中包含的数据。因此,再次为'.category-number'调用.each函数是不可取的。

有人能建议一种方法来按顺序捕获category-number和category-name div中的所有数据吗?

警报仅用于测试,但是有更好的方法在数组中显示值吗?

感谢。

1 个答案:

答案 0 :(得分:2)

id元素没有category-name或名称属性,我可以理解您尝试从category-numbercategory-name元素中获取值。< / p>

function save_values() {
    var data = $('.category').map(function () {
        var $this = $(this),
            $cn = $(this).find('.category-number');
        return {
            'name': $.trim($cn.children('span').text()),
            'value': $.trim($cn.find('.category-name span').text())
        };
    }).get();
    console.log(data);    
};

演示:Fiddle