2009-11-06 164 views
1

以下代碼按屬性「amount」重新排列元素。我怎樣才能改變這個代碼,以便將這些項目顛倒過來?謝謝。元素的反轉順序

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); 
}); 

回答

2

更改您比較(的b-a代替a-b)的值的順序:

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

不要忘記parseInt上的radix參數,例如, parseInt($(b).attr('amount'),10) – Greg 2009-11-06 16:39:33

+1

'$ .fn.sort'不返回一個數組,它會再次返回jQuery包裝集合,它不包含'reverse'方法。 – 2009-11-06 16:44:23

+0

謝謝,第一個例子沒有奏效,第二個例子沒有奏效。 – usertest 2009-11-06 16:49:01

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

我已經使用了這種技術。它非常適合小型收藏。

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

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