编程语言
首页 > 编程语言> > javascript – 如何随机排序列表项?

javascript – 如何随机排序列表项?

作者:互联网

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

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

但是,有没有更好的解决方案呢?

解决方法:

看看this question and answer thread.我喜欢这个解决方案来自用户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;
};

编辑:下面的使用说明.

随机化所有< li>每个’.member’< div>中的元素:

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

随机化每个< ul>的所有孩子:

$('ul').randomize();

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

标签:javascript,jquery,sorting,random,html-lists
来源: https://codeday.me/bug/20190926/1818306.html