Я использую плагин jQuery tablesorter для сортировки таблицы, которая назначает обработчики .click () для <th>
s в таблице. Поскольку моя таблица имеет чередующиеся цвета для каждого столбца, я построил простую функцию fix_table_colors(identifier)
, которая делает то же, что и при вызове вручную с помощью Firebug. Однако я хотел бы, чтобы это автоматически вызывалось после сортировки.
Для этого я решил извлечь обработчик .click () из <th>
s и назначить новый обработчик, который просто вызывает предыдущий обработчик, за которым следует fix_table_colors()
.
( Этот ТАК вопрос похож, но использует стандартные атрибуты onClick (), которые здесь не сработают.)
Из принятого ответа на на этот вопрос я создал следующий код:
$(document).ready(function() {
$("table.torrents").tablesorter({
debug: true,
headers: {
1: { sorter: 'name' },
2: { sorter: 'peers' },
3: { sorter: 'filesize' },
4: { sorter: 'filesize' },
5: { sorter: 'filesize' },
6: { sorter: 'ratio' }
}
});
$('table.torrents thead th').each(function() {
var th = $(this);
var clickHandler = th.data('events').click[0];
th.click(function() {
clickHandler();
fix_table_colors('table.torrents');
});
});
});
Хотя это концептуально правильно, clickHandler
не является на самом деле функцией, и поэтому я не могу ее вызвать.
Немного больше копаясь в Firebug, я обнаружил, что щелчок [3], кажется, удерживает функцию, которую я ищу (и нажимаю [10] мой новый). При этом я получаю ошибку 'e is undefined' в строке 2 файла tablesorter.min.js.
Я даже иду по правильному пути? У меня есть ощущение, что с тем, что я нашел до сих пор, я могу сделать эту работу, но это будет намного ужаснее, чем я ожидал.