javascript - 根据文本对 div 进行排序仅有效一次

标签 javascript jquery html sorting

我有以下html代码:

<div class="dropzone">
    <div class='kenmerk_path' data-id='301' data-pk-id='26'>
        elektriciteit -> 220 volt
    </div>
    <div class='kenmerk_path' data-id='271' data-pk-id='31'>
        poort -> aantal per ratio van 1/x m²(aantal)
    </div>
    <div class='kenmerk_path' data-id='202' data-pk-id='68'>
        faciliteiten -> aanmeldingsloket
    </div>
    ...
    <div class='kenmerk_path' data-id='149' data-pk-id='47'>
        elektriciteit -> 250/380 volt
    </div>
</div>

我想根据其中的文本对内部 div 进行排序。 所以使用下面的方法:

function orderDropzone(){
    var mylist = $('.dropzone');

    var listitems = mylist.children('div').get();
    listitems.sort(sort_asc);

    $.each(listitems, function(index, item) {
        mylist.append(item);
    });
}
function sort_asc(a, b){
    return ($(b).text()) < ($(a).text()) ? 1 : -1;
}

我对它们进行排序,这是第一次成功。

但是我在 .dropzone 的末尾动态添加了另一个 div,并再次调用该函数,但它不会再次对列表进行排序。

我使用以下代码添加新部门:

function addKenmerk(item){
    var new_kenmerk = "<div class='kenmerk_path' data-id='200'> 
                            aansluiting -> water 
                       </div>";
    $('.dropzone').append(new_kenmerk);
    orderDropzone();
}

因此,我希望首先放置新添加的 div 的地方没有任何变化。

我是做错了什么,还是遗漏了什么?

谢谢!

最佳答案

您需要像这样在排序功能中 trim 文本:

function orderDropzone(){
    var mylist = $('.dropzone');

    var listitems = mylist.children('div').get();
    listitems.sort(sort_asc);

    $.each(listitems, function(index, item) {
        mylist.append(item);
    });
}
function sort_asc(a, b){
    return ($.trim($(b).text())) < ($.trim($(a).text())) ? 1 : -1;
}
$(function() {
    function addKenmerk(item){
        console.log('test');
    var new_kenmerk = $("<div class='kenmerk_path' data-id='200'> \
                            aansluiting -> water \
                       </div>");
    $('.dropzone').append(new_kenmerk);
    orderDropzone();
    }
    orderDropzone();
    addKenmerk();
});

这是一个有效的 jsFiddle:http://jsfiddle.net/pnMWZ/

关于javascript - 根据文本对 div 进行排序仅有效一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21929750/

相关文章:

javascript - 在 Javascript 中使用 JSON 从 Google Search Ajax API 获取结果

javascript - pdf文件无法在浏览器中打开

javascript - 通过 js 创建时,HTML5 输入类型颜色不显示值

javascript - 如何让自定义对象监听子自定义对象的事件?

javascript - 在 html 选择元素中显示空值

javascript - 显示错误文档时获取 iframe 内容?

javascript - 如何获取未包含在任何html标签中的innertext

javascript - 第二次单击时jQuery禁用按钮功能

html - 自定义图标推特 Bootstrap

html - 如何在同一列中显示两张图片?