Я пытаюсь сортировать строки таблицы без какого-либо плагина. К сожалению, у меня нет возможности использовать плагин. Ну вот, что я пытался до сих пор:Игнорирование пустых ячеек при сортировке строк таблицы с помощью jQuery
var info = $('#project_table tr.punch_list_summary');
//For Closed Date
$(document).on('click', '#descending_closed_date', function(e) {
e.preventDefault();
var sortDir = -1;
info.sort(function(a, b) {
if ($(a).attr('data-closeddate') === 'null') {
if ($(b).attr('data-closeddate') === 'null') {
return false;
}
return true;
}
a = new Date($(a).attr('data-closeddate'));
b = new Date($(b).attr('data-closeddate'));
return (a - b) * sortDir;
});
$('#project_table').html(info);
sortDir = 1;
});
$(document).on('click', '#ascending_closed_date', function(e) {
e.preventDefault();
var sortDir = 1;
info.sort(function(a, b) {
if ($(a).attr('data-closeddate') === 'null') {
if ($(b).attr('data-closeddate') === 'null') {
return false;
}
return true;
}
a = new Date($(a).attr('data-closeddate'));
b = new Date($(b).attr('data-closeddate'));
return (a - b) * sortDir;
});
$('#project_table').html(info);
sortDir = -1;
});
});
Как вы можете видеть, я использую data-attribute
для сортировки строк. Колонка Закрытая дата может быть пустым или иметь дату. Проблема в том, что это просто сортирует случайные строки, более того, я пытаюсь привести все пустые строки внизу, а строки с закрытой датой вверху. Что я могу делать неправильно?
Вот работающий jsbin для тех, кто хочет видеть, что я делал до сих пор. Я бы очень признателен за любую помощь.
UPDATE
Вот обновленный jsbin. Теперь я могу сортировать по закрытой дате, но это все равно не заставляет строки с пустыми закрытыми датами вниз.
Что не работает? Сортировка по закрытой дате отлично работает – juvian
@juvian Ну, я хочу привести строки с закрытой датой вверх, а пустые - отсортировать. – user1601973
Я бы не ожидал, что все браузеры будут правильно разбирать строки даты в формате 'new Date '(' 25 апреля 2014 года);', результатом в некоторых будет 'NaN'. Вместо этого используйте вместо этого [значение времени] (http://ecma-international.org/ecma-262/5.1/#sec-15.9.1.1). – RobG