如何在jQuery中按值对子进行排序

我有与我想要排序的跨度值的链接。

http://jsfiddle.net/rF7LR/

在这个例子中,我想按金额排序。

HTML:

amount  

JS:

 $('#sortamount').on('click', function() { var entries = document.getElementsByClassName('entrylink'); //nodelist var sorted = []; for (var i = 0; i < entries.length; i++) { var value = entries[i].children('span.amount').val(); sorted.push(value); } sorted.sort(); $('#entrytable').html(''); for (var i = 0; i < entries.length; i++) { //find entrylink with sorted amount entries.filter(function(){return this.children('a span.amount').val() == sorted[i]}); //append to entrytable } }); 

现在我收到了错误

 var value = entries[i].children('span.amount').val(); 

 '[object HTMLCollection]' is not a function (evaluating 'entries[i].children('span.amount')') 

怎么了? 为什么我不能将数量的值添加到排序数组?

如果你需要对列表进行排序,我认为如果使用一些jQueryfunction可以更简单:

 $('#sortamount').on('click', function () { $('.entrylink').sort(function(a, b) { return $(a).find('.amount').text() - $(b).find('.amount').text(); }) .appendTo('#entrytable'); }); 

演示: http : //jsfiddle.net/rF7LR/2/

为了方便摆脱
标签,我用CSS创建a块。

做这个:

 var value = $(entries[i]).children('span.amount').val(); 

现在,您将包装要与jquery方法一起使用的entries[i]