我尝试使用data-id属性而不是id来序列化可排序列表。
这是我的代码:
var obj = $('.sortable li').map(function() {
return 'id=' + $(this).data("id");
}).get();
JSON.stringify(obj)
返回:
["id=1", "id=2", "id=3"]
我需要的是返回:
[{"id":1},{"id":2},{"id":3}]
这是html部分:
<ul class="sortable">
<li data-id="1">Item 1</li>
<li data-id="2">Item 2</li>
<li data-id="3">Item 3</li>
<li data-id="4">Item 4</li>
<li data-id="5">Item 5</li>
</ul>
答案 0 :(得分:3)
var id = [];
$('.sortable li').each(function() {
id.push({
id: $(this).data('id')
});
})
console.log(JSON.stringify(id))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="sortable">
<li data-id="1">Item 1</li>
<li data-id="2">Item 2</li>
<li data-id="3">Item 3</li>
<li data-id="4">Item 4</li>
<li data-id="5">Item 5</li>
</ul>
使用.each()
和.push()
答案 1 :(得分:2)
您可以使用map方法本身来实现此目的。
var obj = $('.sortable li').map(function() {
return {
id: $(this).data("id")
};
}).get();
JSON.stringify(obj);