2

我有一个类列表,例如:

 <ul id="my_list">
    <li class="notrelevant"><a href="#1">something not relevant</a></li>
    <li class="notrelevant"><a href="#2">something not relevant</a></li>
    <li class="notrelevant"><a href="#3">something not relevant</a></li>
    <li class="notrelevant"><a href="#4">something not relevant</a></li>
    <li class="notrelevant"><a href="#5">something not relevant</a></li>


    <li class="relevant"><a href="#75">something not relevant</a></li>
</ul>

你可以看到列表的最后一个类是相关的,这个类应该总是在列表的末尾!

我尝试用这个随机排序列表:

$(document).ready(function(){
    var liArr =[]

    $('ul').each(function(){
        var $ul = $(this);
        liArr = $ul.children('li');
     });    
    var i = liArr.length,
        j, temp;
    while (--i) {
        j = Math.floor(Math.random() * (i + 1));
        temp = liArr[i];
        liArr[i] = liArr[j];
        liArr[j] = temp;
    };
$('ul').append(liArr);            
});

并且 ofc 被排序到中间的某个地方。我不想忽略最后一项,所有标签都必须随机排序。

我如何随机排序列表并仅将最后一个类设置为“相关”,或者我只能对标签进行排序?

4

2 回答 2

0

为什么不使用 jQuery 的shuffle 插件

<script type="text/javascript" src="jquery-shuffle.js"></script>
<script>
$(function() {
   $('#my_list li').shuffle();
});
</script>

然后将类名应用于last-child

$('#my_list li:last-child').attr('class', 'relevant');
于 2013-01-26T12:31:37.723 回答
0
var $list = $('#my_list'), 
    $li = $list.find('li:not(:last)');
$li.sort(function(){
   return Math.floor(Math.random() * 3);
}).prependTo($list);

http://jsfiddle.net/Sa6GG/

或者:

var $list = $('#my_list'), 
    $li = $list.find('li');

$li.sort(function(){
   return Math.floor(Math.random() * 3);
});

$li.prop('class', 'notrelevant')
   .last()
   .prop('class', 'relevant')
   .end()
   .appendTo($list);

http://jsfiddle.net/MQYA3/

于 2013-01-26T12:32:11.953 回答