1

だから私は順序付けられていないリストを、 each 内の子要素の data-id 属性でソートしようとしています<li>。この要素を対象にして、その値で並べ替えるにはどうすればよいですか?

これが私の現在のコードです:

    $("#sort_popularity").live("click", function() {
        var listitems = list.children('li').get();

        listitems.sort(function(a, b) {
            var compA = $(a).("#subject_popularity");
            var compB = $(b).("#subject_popularity");
            return compA < compB;
        });

        $.each(listitems, function(index, item) {
            list.append(item); // (List is defined elsewhere in my code)
        });
    });

HTML:

<a href="#" id="sort_popularity">Sort</a>

<ul>
    <li><span id="popularity" data-id="10">10</li>
    <li><span id="popularity" data-id="20">20</li>
    <li><span id="popularity" data-id="5">5</li>
</ul>
4

1 に答える 1

2
// for ASC.
var lis = $('ul li');

lis.sort(function(a, b) {
    return parseInt($('span', a).data('id'), 10) > parseInt( $('span', b).data('id'), 10);
});

$('ul').html(lis);

// for DESC.
var lis = $('ul li');

lis.sort(function(a, b) {
    return parseInt( $('span', a).data('id'), 10) < parseInt( $('span', b).data('id'), 10);
});

$('ul').html(lis);

ノート

idの を変更し、複数spanの場合は同じではなく、タグを閉じます(タイプミスの可能性があります)。idspanspan

于 2012-06-27T01:16:00.897 に答える