如何随机排序列表项?

我目前有这个代码随机排序列表项:

var $ul = $('#some-ul-id'); $('li', $ul).sort(function(){ return ( Math.round( Math.random() ) - 0.5 ) }).appendTo($ul); 

但是,还有更好的解决方案吗?

看看这个问题并回答主题 。 我通过用户gruppler喜欢这个解决方案:

 $.fn.randomize = function(selector){ var $elems = selector ? $(this).find(selector) : $(this).children(), $parents = $elems.parent(); $parents.each(function(){ $(this).children(selector).sort(function(){ return Math.round(Math.random()) - 0.5; // }). remove().appendTo(this); // 2014-05-24: Removed `random` but leaving for reference. See notes under 'ANOTHER EDIT' }).detach().appendTo(this); }); return this; }; 

编辑:下面的使用说明。

要随机化每个’.member’

所有

  • 元素:

     $('.member').randomize('li'); 

    随机化每个

      所有孩子:

       $('ul').randomize(); 

      akalata 编辑: akalata在评论中告诉我, detach()可以用来代替remove() ,主要好处是如果任何数据或附加的侦听器连接到一个元素并且它们是随机的, detach()会保留它们到位。 remove()只会抛出听众。

      我也坚持我在谷歌上搜索并遇到一个代码的问题。 我为我的用途修改了这段代码。 我还在15秒后将列表随机播放。

        

      希望这个解决方案有所帮助……有一个很好的工