1

リストをアイテムでソートしたい。並べ替えは、各アイテムのデータ要素に基づく必要があります。

奇妙なことに、PCでローカルに試してみると(私の sortingtest.html をダウンロードして)動作しますが、jfiddle ではオンラインでは動作せず、さらに重要なのは携帯電話では動作しません!

私のコードの何が問題なのか、または携帯電話でも動作するようにするにはどうすればよいか考えていますか?

コード:

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script>
    function sortEntries() {    
        var elems = $('#mylist').children('li').remove();
        elems.sort(function(a,b){ 
            return parseInt($(b).data('vote')) > parseInt($(a).data('vote'));
        });
        $('#mylist').append(elems);
    }
    </script>
</head>

<body>

    <ul id="mylist">
        <li data-vote="2">Vote: 2</li>
        <li data-vote="4">Vote: 4</li>
        <li data-vote="1">Vote: 1</li>
        <li data-vote="5">Vote: 5</li>
        <li data-vote="3">Vote: 3</li>
    </ul>

    <a href="#" onClick="sortEntries();">Sort me!</a>

</body>
</html>

JFiddle: http://jsfiddle.net/Q82Qu/

HTML ファイルのダウンロード: (名前を付けてファイルを保存) https://copy.com/c0Ogb8wLtRrg

よろしくお願いします、スティー

4

2 に答える 2

1
var elems = $('#mylist').children('li').remove();

上記のコードはDOMドキュメントから削除するため、次のようには使用できませんelems.sort(

<html>
<head>
    <script src="js/jquery.js"></script>
    <script>
    function sortEntries()
    {
        var elems = $('#mylist').children('li');
        elems.sort(function(a,b){ 
            return parseInt($(b).data('vote')) > parseInt($(a).data('vote'));
        });
        $('#mylist').append(elems);
    }
    </script>
</head>

<body>

    <ul id="mylist">
        <li data-vote="2">Vote: 2</li>
        <li data-vote="4">Vote: 4</li>
        <li data-vote="1">Vote: 1</li>
        <li data-vote="5">Vote: 5</li>
        <li data-vote="3">Vote: 3</li>
    </ul>

    <a href="#" onClick="sortEntries();">Sort me!</a>

</body>
</html>
于 2013-03-09T10:25:24.537 に答える
1

私は自分でそれを整理しました:

重要なのは、次の並べ替えコードを使用することです。

elems.sort(function(a,b){ 
    return $(b).attr('data-vote') - $(a).attr('data-vote');
});
于 2013-03-13T08:33:50.927 に答える