Получил себя в забавной ситуации: на странице есть три таблицы. Используя sortEnd, каждый раз, когда вы сортируете одну таблицу, она сортирует остальные три. Однако, поскольку я привязал sortEnd к функции, которая выполняет сортировку, вы получаете бесконечный цикл сортировки/обращения. Это выглядит так:jQuery бесконечный цикл w/tablesorter
$("table.tablesorter").tablesorter({widgets: ['zebra']}).bind("sortEnd", function() {
$(this).find("th.headerSortDown,.headerSortUp").each(function(i) {
index = $(this).attr("cellIndex");
order = ($(this).is(".headerSortDown")) ? 1 : 0;
$("table.tablesorter").tablesorter({sortList: [[index,order]]});
});
});
Любые советы по его очистке?
На основе обратной связи ниже от Nick Craver, следующий код, кажется, работает хорошо:
$("table.tablesorter").tablesorter({widgets: ['zebra']}).bind("sortEnd", function() {
var current = $(this);
if (current.data("sorting")) {
current.data("sorting", false);
return false;
}
$(this).find("th.headerSortDown,.headerSortUp").each(function(i) {
index = $(this).attr("cellIndex");
order = ($(this).is(".headerSortDown")) ? 1 : 0;
$("table.tablesorter").not(current).data("sorting", true).trigger("sorton", [[[index,order]]]);
});
});
Не работает - есть цепочка других таблиц, запускающих все таблицы .tablesorter, поэтому проверка на текущую не устраняет проблему. – Wells
@Wells - Обновлено, чтобы приспособиться к этому ... Я не могу проверить это с готовностью, поэтому дайте мне знать, есть ли какие-либо проблемы. –
Пробовал ли вы это на странице с тремя таблицами, классифицированными как tablesorter? :) – Wells