【问题标题】:After second click function is working for sorting in jquery在第二次单击功能用于在 jquery 中进行排序后
【发布时间】:2014-09-12 12:38:31
【问题描述】:

我已经在 javascript/jquery 中按字母顺序对列表标签进行了排序,当我第二次单击时它会起作用。我的意思是第一次点击它工作几秒钟(不到一秒)然后回到未排序但第二次点击后它工作正常。

我的排序功能是

function status() {
    var mylist = $('ul');
    var listitems = mylist.children('li').get();
    listitems.sort(function (a, b) {
        var compA = $(a).find('.Status-For-Sorting').text().toUpperCase();
        var compB = $(b).find('.Status-For-Sorting').text().toUpperCase();
        return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
    });
    $.each(listitems, function (idx, itm) {
        mylist.append(itm);
    });
}

我在 deviceready 中定义了该功能,例如

document.addEventListener("deviceready", init, false);

function init() {
    $().ready(function () {
        $("#sort-button-status").click(status);
    }
}

*****HTML****

<a  value="sort" id="sort-button-status" class="sort-button-status">status</a>

告诉我哪里错了,这段代码是根据状态正确排序的,但是在第二次点击之后..

【问题讨论】:

  • 使用$(document).ready(function(){ ... })(或快捷方式$(function(){ ... }))而不是$().ready(function(){ ... }),您似乎混合了in the jQuery docs列出的两个选项。

标签: javascript jquery sorting


【解决方案1】:

尝试使用.appendTo() 将排序列表应用于mylist

function status()
{  
    var mylist = $('ul');
    var listitems = mylist.children('li').get();
    listitems.sort(function(a, b) {
        var compA = $(a).find('.Status-For-Sorting').text().toUpperCase();
        var compB = $(b).find('.Status-For-Sorting').text().toUpperCase();
        return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
    }).appendTo(mylist);
}

【讨论】:

  • Bhusan 我试过你的代码,但那不是不工作..我的意思是我确实在返回值的最后附加了 .apendTo(mylist) 但这个函数不起作用;
  • appendTo而不是apendTo,请检查您的拼写
  • 对不起,我使用了 appendTo(),这是我的错误,我在评论中写了 apendTo 而不是 appendTo() ..
猜你喜欢
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 2014-08-03
  • 2016-11-14
相关资源
最近更新 更多