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

标签 javascript jquery

我有一些带有跨度值的链接,我想根据这些跨度值进行排序。

http://jsfiddle.net/rF7LR/

在此示例中,我想按金额排序。

HTML:

<a id = "sortamount" class = "sort"><span>amount</span></a>

<div id='entrytable'> 
    <a class="entrylink" href="/link">

                <span class = "entry amount">10</span>

                <span class = "entry rating">11</span>

                <span class = "entry price">12</span>

            </a><br>
      <a class="entrylink" href="/link">

                <span class = "entry amount">15</span>

                <span class = "entry rating">16</span>

                <span class = "entry price">100</span>

            </a><br>
     <a class="entrylink" href="/link">

                <span class = "entry amount">13</span>

                <span class = "entry rating">12</span>

                <span class = "entry price">11</span>

            </a><br>

</div>

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')')

怎么了?为什么我无法将金额值添加到排序数组中?

最佳答案

如果您需要对列表进行排序,我认为如果您使用一些 jQuery 功能,事情会简单得多:

$('#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/

我做了a用CSS屏蔽方便去掉<br>标签。

关于javascript - 如何在 jQuery 中按值对子项进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22757904/

相关文章:

java - 如何在java中保证文件上传的安全

javascript - 在 jQuery 中使用单个输入来设置多个不同选项的值的方法

javascript - 将文本加载到 jquery 文本区域

java - 如果他在相同或不同的浏览器上再次登录,如何注销用户的先前 session

php - jQuery 变量到 php 不起作用

javascript - 如何在 ExtJ 中深入分析图表

javascript - 如何从 chrome 控制台窗口复制对象?

javascript - 是否可以使用 Javascript 检索 iframe 的*完整* HTML 页面源代码?

javascript - Vuetify v-slider - 更改值后执行函数(v-slider)

php - 从 PHP 页面上的 jQuery AJAX 调用获取 JSON 数据