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
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 に答える
0

jQueryのシャッフル プラグインを使用してみませんか。

<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 に答える