如何在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]
。