使用包含在其中的span标记的内容对href标记列表进行排序

时间:2015-03-16 09:26:24

标签: javascript jquery html sorting

我无法使排序功能正常工作。我正在动态创建一个a href链接列表,我想在追加它们时对其进行排序。这是生成a hrefs的JQuery代码:

var matchScoresText='<a href="#breakdownDialog" data-transition="slidefade" class="ui-btn" data-icon="arrow-r" data-iconpos="right" id="cvResults"> <h3>' + //data-rel="dialog" data-transition="pop" 
        response.title + 
        '</h3>   <span id="percentageContainer"> ' + response.percentage +
        '%</span></a>';
        $('#resultsList').append(matchScoresText);

#resultsList是a hrefs附加到的div元素。添加这些内容后,我尝试按<span>标记的内容对列表进行排序。这是由response.percentage填充的,这是一个数字。

orderedLinks=$('#resultsList > a').sort(sortByPercentage);
        $('#resultsList').append(orderedLinks);

我无法使排序功能本身正确。目前它看起来像这样:

function sortByPercentage(a, b){
return $('#percentageContainer').text() < $('#percentageContainer').text() ? 1 : -1;
}

我怀疑这是问题所在,但我不确定如何选择#percentageContainer的内容。

1 个答案:

答案 0 :(得分:1)

sort处理函数中,您需要使用ab参数提供的值,这些参数与span中的a元素相关被迭代。您还需要将值转换为int或float,具体取决于所需的精度。试试这个:

var $orderedLinks = $('#resultsList a').sort(sortByPercentage);
$('#resultsList').append($orderedLinks);

function sortByPercentage(a, b){
    return parseFloat($(a).find('span').text()) - parseFloat($(b).find('span').text());
}

Example fiddle