1

我得到了这样的 UL:

<ul id='mylist'>
<li id='1'><img src='kids.jpg'>kids.jpg</li>
<li id='2'><img src='apple.jpg'>apple.jpg</li>
<li id='3'><img src='toys.jpg'>toys.jpg</li>
<li id='4'><img src='love.jpg'>love.jpg</li>
</ul>

我想像这样使用 jquery/javascript 对其进行排序:

<ul id='mylist'>
<li id='2'><img src='apple.jpg'>apple.jpg</li>
<li id='1'><img src='kids.jpg'>kids.jpg</li>
<li id='4'><img src='love.jpg'>love.jpg</li>
<li id='3'><img src='toys.jpg'>toys.jpg</li>
</ul>

我可以知道如何编写代码吗?

4

3 回答 3

1
$(document).ready(function() {

    var ul = $('ul#mylist'),
    li = ul.children('li');

    li.detach().sort(function(a,b) {
        return alphabetical($(a).children('img').attr('src'), $(b).children('img').attr('src'));
    });

    ul.append(li);
});

function alphabetical(a, b)
{
     var A = a.toLowerCase();
     var B = b.toLowerCase();
     if (A < B){
        return -1;
     }else if (A > B){
       return  1;
     }else{
       return 0;
     }
}
于 2012-10-10T07:48:54.553 回答
0
<ul id='mylist'>
<li id='1'><img src='kids.jpg'>kids.jpg</li>
<li id='2'><img src='apple.jpg'>apple.jpg</li>
<li id='3'><img src='toys.jpg'>toys.jpg</li>
<li id='4'><img src='love.jpg'>love.jpg</li>
</ul>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
var starting_array = new Array();
var temp_array = new Array();
for(var i = 1 ; i <= 4 ;i++){
starting_array[i] =  $('#'+i).find('img').attr('src');
temp_array[i] = $('#'+i).find('img').attr('src');
}

temp_array.sort();

$('#mylist').html('');
var li_data = '';
for(var j=0; j< temp_array.length-1 ; j++ ){
     var id = $.inArray(temp_array[j] ,starting_array);
     li_data += '<li id="'+ id +'"><img src="'+ temp_array[j] +'" > '+ temp_array[j]+' </li>'; 
}
$('#mylist').html(li_data);

</script>
于 2012-10-10T08:18:32.597 回答
-1

你可以试试这个:

var items = $("#mylist > li").detach().get( ); 

items.sort( srcSort );
$("#mylist").append( items );


function srcSort( a, b ) {

    var _a = $(a).children("img").prop("src").toUpperCase();
    var _b = $(b).children("img").prop("src").toUpperCase();

    if( _a > _b ) return 1;
    if( _a < _b ) return -1;
    return 0;
}

在这里摆弄

于 2012-10-10T09:43:32.603 回答