使用jQuery对位于单独div中的DOM元素进行排序

使用jQuery对位于单独div中的DOM元素进行排序,jquery,html,sorting,Jquery,Html,Sorting,我正在编写一个jQuery代码,它根据这样一个标准对页面中所有具有类“order\u me”的div进行排序 这些div排列在由div组成的容器行中,即: <div id="container"> <div class="row"> <div class="order_me"></div> <div class="order_me"></div> <div class=

我正在编写一个jQuery代码,它根据这样一个标准对页面中所有具有类“order\u me”的div进行排序

这些div排列在由div组成的容器行中,即:

<div id="container">
    <div class="row">
      <div  class="order_me"></div>
      <div  class="order_me"></div>
      <div  class="order_me"></div>
    </div> 
    <div class="row">
       <div  class="order_me"></div>
       <div  class="order_me"></div>
       <div  class="order_me"></div>
    </div>
    <div class="row">
       <div  class="order_me"></div>
    </div>
</div> 
然后我将列表转换为JS数组,并按如下方式排序:

var array = jQuery.makeArray($lst);
array.sort(sortingFunction);
由于我有已排序的div列表:如何有效地将已排序的div放入行中?

当然,如果你还有别的想法,告诉我你的想法

请注意,最后一行的div数可能较少,而其他行的div数相同

提前谢谢。 当做让我来试一试:

var $rows = $('.row');
var limit = $($rows[0]).find('.order_me').length;
var $lst = $('#container').find('.order_me'));
var array = jQuery.makeArray($lst);
array.sort(sortingFunction);

var count = 0;
var rowIndex = 0;
for(var i in array){
    var div = array[i];
    $($rows[rowIndex]).append($(div));
    count++;
    if(count >= limit){
        count = 0;
        rowIndex++;
    }
}
基本上,我捕获了第一行中要用作限制的div数 我循环遍历数组,根据rowIndex将div附加到行中,并添加到计数器中。
当计数器达到极限时,我们开始通过增加rowIndex将div追加到下一行,直到所有元素都追加到正确的位置。

类似的方法如何

var $lst = $('#container').find('.order_me'));
var array = jQuery.makeArray($lst);
array.sort(sortingFunction);
$('#container').html(array); // add them to container
for(var i=0; i < $divs.length;i+=3){ // loop through and wrap them in divs
   $('#container div.order_me').slice(i,i+3).wrapAll('<div class="row"></div>');  
}​
var$lst=$(“#容器”).find(“.order#me”);
var array=jQuery.makeArray($lst);
array.sort(排序函数);
$('#container').html(数组);//将它们添加到容器中
对于(var i=0;i<$divs.length;i+=3){//循环并将它们包装成divs
$('#container div.order_me').slice(i,i+3).wrapAll('');
}​

您是否总是每行有3个有序div?如果是这样的话,那么你需要循环并保留一个计数器。附加到适当的行或根据需要添加新行。好吧,最后一行的div可能会更少!显然,要排序的div的数量是恒定的,而且排序后的行数保持不变!因此,可以得到排序前当前放入一行的div数(排序后相等)。您是否按数字排序?“单词?”威利:嗯,我有不同的标准。他们依赖于一种新的生活方式。其中一些比较简单(例如字符串比较),另一些比较复杂,需要在文档内部进行特殊的数据检索。这有关系吗?难道我不能只想得到排序的列表吗?@Sheikheera假设排序已经完成。首先,让我感谢你的回答。这与矿山实施非常相似。它是有效的,但你认为它是有效的吗?考虑一下,我必须整理1000个项目。当然,我对GUI响应时间很感兴趣:我知道对1000个对象进行排序很快,但我不知道这会影响浏览器上显示的内容。我之所以选择此解决方案,是因为在我进行的许多实验中,它似乎更快。有趣!你认为效率如何?请阅读我对SparK solution的第一条评论。谢谢你所说的交换价值是什么意思?没有价值交换
var $lst = $('#container').find('.order_me'));
var array = jQuery.makeArray($lst);
array.sort(sortingFunction);
$('#container').html(array); // add them to container
for(var i=0; i < $divs.length;i+=3){ // loop through and wrap them in divs
   $('#container div.order_me').slice(i,i+3).wrapAll('<div class="row"></div>');  
}​