После того, как функция второго щелчка работает для сортировки в jquery

Я сделал сортировку по списку в алфавитном порядке в 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 ****

status

скажите мне, парни, где я ошибаюсь, этот код сортируется правильно в соответствии со статусом, но после второго щелчка..

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);
}

licensed under cc by-sa 3.0 with attribution.