<button name="id">按id排序</button>
    <button name="date">按时间排序</button>
    <ul>
     <li>
         <span name="id">123</span>
            <span name="date">2012/3/8</span>
        </li>
        <li>
         <span name="id">234</span>
            <span name="date">2012/1/5</span>
        </li>
        <li>
         <span name="id">900</span>
            <span name="date">2012/9/8</span>
        </li>
        <li>
         <span name="id">787</span>
            <span name="date">2012/2/8</span>
        </li>
    </ul>
有没办法当我点击按id排序的时候li就按id排,同样点时间的时候就按时间排,麻烦各位啦

解决方案 »

  1.   

    date自己改写下方法就OK
    $('button[name="id"]').click(function () {
        $('ul').html($.makeArray($('li')).sort(function (li1, li2) {
            return parseInt($(li1).find('span[name="id"]').text(), 10) - parseInt($(li2).find('span[name="id"]').text(), 10);
        }));
    });
      

  2.   

    请问 jquery中有$.makeArray  、 sort()之类的方法??  jquery1.7版本中好像没有这两个方法 
      

  3.   

    $.makeArray()方法有的,sort是原生方法。
      

  4.   

    ($(li1).find('span[name="id"]').text(), 10) 里面的10是什么意思啊 我套在我原代码里面就乱了
      

  5.   

    问题出现了 <ul id="list1">
            <li>
                <span name="id">123</span>
                <span name="date">2012/3/8</span>
            </li>
            <li>
                <span name="id">234</span>
                <span name="date">2012/1/5</span>
            </li>
            <li>
                <span name="id">900</span>
                <span name="date">2012/9/8</span>
            </li>
            <li>
                <span name="id">787</span>
                <span name="date">2012/2/8</span>
            </li>
        </ul><ul id="list2">
            <li>
                <span name="id">123</span>
                <span name="date">2012/3/8</span>
            </li>
            <li>
                <span name="id">234</span>
                <span name="date">2012/1/5</span>
            </li>
            <li>
                <span name="id">900</span>
                <span name="date">2012/9/8</span>
            </li>
            <li>
                <span name="id">787</span>
                <span name="date">2012/2/8</span>
            </li>
        </ul>
    $('button[name="id"]').click(function () {
        $('#list1').html($.makeArray($('li')).sort(function (li1, li2) {
            return parseInt($(li1).find('span[name="id"]').text(), 10) - parseInt($(li2).find('span[name="id"]').text(), 10);
        }));
    });点一下,然后所有的li都跑到list1里面去了
      

  6.   

    你有多个ul,那么使用each
    $('ul').each(function () {
        $(this).html($.makeArray($(this).find('li')).sort(function (li1, li2) {
            return parseInt($(li1).find('span[name="id"]').text(), 10) - parseInt($(li2).find('span[name="id"]').text(), 10);
        }));
    })