我试图使用ol
来显示多个动态列表项。在appending
使用jQuery的列表项后,我希望浏览器能够刷新有序列表,但它看起来并不像。
<ol>
<li value="1">First</li>
<li value="2">Second</li>
<li value="4">Forth</li>
</ol>
追加<li value="3">Third</li>
后,生成的订单为:
// First
// Second
// Forth
// Third <-
我是否需要触发重新订购,或者仅在呈现页面/添加列表DOM元素时计算订单?
注意:我使用的是Chrome 28.0.1500.95m
答案 0 :(得分:2)
首先,请注意value
不是li
的有效属性,因此您的代码无效。您应该为所需的任何非标准属性使用data
属性,您需要编写分拣机功能。试试这个:
$('#addThird').one('click', function() {
$('ol').append('<li data-value="3">Third</li>');
sortItems();
});
var sortItems = function() {
var $items = $('ol li');
$items.sort(function(a, b) {
var keyA = $(a).data('value');
var keyB = $(b).data('value');
return (keyA > keyB) ? 1 : 0;
});
$.each($items, function(index, row){
$('ol').append(row);
});
}
按元素的data-value
属性排序,但可以根据需要进行修改。