У меня есть код для сортировки таблицы с использованием Jquery. Я использую функцию переключения для чередования щелчков и переключения между сортировкой по возрастанию и убыванию. После того, как вы щелкнете таблицу заголовка, она должна отсортировать ее содержимое.
Однако есть ошибка:
Я нажимаю один раз, он сортируется, затем, когда я нажимаю снова, ничего не происходит. Мне нужно снова щелкнуть (второй раз), чтобы выполнить вторую функцию, и снова выполнить сортировку.
Переключатель должен переключать функции одним кликом, а не двойным, я прав?
Вот код:
firstRow.toggle(function() {
$(this).find("th:first").removeClass("ascendFirst").addClass("descendFirst");
$(this).find("th:not(first)").removeClass("ascend").addClass("descend");
sorted = $.makeArray($("td:eq(0)", "tr")).sort().reverse();
sorted2 = $.makeArray($("td:eq(1)", "tr")).sort().reverse();
sorted3 = $.makeArray($("td:eq(2)", "tr")).sort().reverse();
for (var i = 0; i < sorted.length; i++) {
$("td", "tr:eq(" + (i + 1) + ")").remove();
$("tr:eq(" + (i + 1) + ")").append($("<td></td>").text($(sorted[i]).text()));
$("tr:eq(" + (i + 1) + ")").append($("<td></td>").text($(sorted2[i]).text()));
$("tr:eq(" + (i + 1) + ")").append($("<td></td>").text($(sorted3[i]).text()));
}
}, function() {
$(this).find("th:first").removeClass("descendFirst").addClass("ascendFirst");
$(this).find("th:not(first)").removeClass("descend").addClass("ascend");
sorted = $.makeArray($("td:eq(0)", "tr")).sort();
sorted2 = $.makeArray($("td:eq(1)", "tr")).sort();
sorted3 = $.makeArray($("td:eq(2)", "tr")).sort();
for (var i = 0; i < sorted.length; i++) {
$("td", "tr:eq(" + (i + 1) + ")").remove();
$("tr:eq(" + (i + 1) + ")").append($("<td></td>").text($(sorted[i]).text()));
$("tr:eq(" + (i + 1) + ")").append($("<td></td>").text($(sorted2[i]).text()));
$("tr:eq(" + (i + 1) + ")").append($("<td></td>").text($(sorted3[i]).text()));
}
});