【问题标题】:jQuery: order list items but keep classesjQuery:订购列表项但保留类
【发布时间】:2013-01-10 07:24:19
【问题描述】:

我有一个类列表,例如:

 <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 被排序到中间的某个地方。 我不想忽略最后一项,所有标签都必须随机排序。

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

【问题讨论】:

  • 您希望list itemclass relevant 位于列表末尾吗?

标签: jquery css list class random


【解决方案1】:

你为什么不使用shuffle plugin 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');

【讨论】:

    【解决方案2】:
    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/

    【讨论】:

    • 对不起,这不是我想要的,因为它忽略了最后一项
    • @Mattew 第二个代码不会忽略最后一个li 元素!?
    猜你喜欢
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多