2009-11-06 73 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();