2009-11-06 4 views
1

Le code suivant réorganise les éléments par l'attribut "amount". Comment puis-je modifier ce code afin que les éléments soient inversés? Merci.Ordre d'inversion des éléments

var parent = $('#items'); 
var children = $('a', parent); 
children.sort(function(a, b) { 
    return parseInt($(a).attr('amount')) - parseInt($(b).attr('amount')); 
}) 

$.each(children, function(i, child) { 
    parent.append(child); 
}); 

Répondre

2

Modifier l'ordre des valeurs que vous comparez (b-a au lieu de a-b):

var children = $('a', parent).sort(function(a, b) { 
    return parseInt($(b).attr('amount'), 10) - parseInt($(a).attr('amount'), 10); 
}); 
+1

parseInt ($ (b) .attr ('amount'), 10) – Greg

+1

'$ .fn.sort' ne renvoie pas de tableau, il renvoie à nouveau le jeu enveloppé jQuery, qui ne contient pas de méthode' reverse'. –

+0

Merci, le premier exemple n'a pas fonctionné, le second a fait. – usertest

0
children.sort(function(a, b) { 
    return parseInt($(a).attr('amount')) < parseInt($(b).attr('amount')) ? 0 : 1; 
}); 
1

Je l'ai utilisé cette technique. C'est idéal pour les petites collections. Ne pas oublier le paramètre radix sur parseInt, par exemple

jQuery.fn.reverse = function() { 
    return this.pushStack(this.get().reverse(), arguments); 
}; 

var r = $('.class').reverse(); 
Questions connexes