如果有一个 Javascript ID 数组
var myArray = ['2', '1', '3'];
现在,我也有了一组具有相应ID的DIVS。
<div id='container'>
<div id='item1'>1</div>
<div id='item2'>2</div>
<div id='item3'>3</div>
</div>
有没有一种简单的方法可以根据数组顺序对这些 div 进行排序?我曾想过仅循环遍历 div 并使用 insertBefore()
和 insertAfter()
重新排列项目,但我想知道是否有更好的方法..
这是我迄今为止想到的( JSFiddle DEMO )
(function( $ ){
$.fn.jaySort= function(prefix, lst) {
var prev=null;
for (var x=0; x<lst.length; x++){
if (!prev) prev = $('#placeHolder');
$('#' + prefix + lst[x]).insertAfter(prev);
prev = $('#' + prefix + lst[x]);
}
};
})( jQuery );
///////////////////////////////////////////
var myArray = ['2', '1', '3'];
$('#container').jaySort('item', myArray);
更新
根据下面接受的答案,代码已改进为:
(function( $ ){
$.fn.jaySort= function(prefix, lst) {
for (var x=0; x<lst.length; x++)
$(this).append($('#' + prefix + lst[x]));
};
})( jQuery );
$('#container').jaySort('item', ['3', '2', '1']);
最佳答案
这也有效(而且更短)
<div id='container'>
<div id='item1'>1</div>
<div id='item2'>2</div>
<div id='item3'>3</div>
</div>
var myArray = ['2', '1', '3'];
$.each(myArray,function(index,value){
$('#container').append($('#item'+value));
});
关于jQuery:根据 ID 对 Div 进行排序,基于 ID 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5473915/