私は、リストアイテムの日付とクラスに基づいてリストアイテムをソートする機能を持っています。遅れてしまって、疲れていて、欲求不満なので、ここで忘れていることは分かりません。jqueryソート関数とプリペンド/インサート後?
この関数は、クラスが.pinned
であるかどうかを最初に判断し、日付で並べ替えてリストの先頭に挿入する必要があります。
次に、アイテムの日付(data-dateにあります)を調べ、今日よりも前の場合は、クラス.past
を日付順に並べ替えて、固定したアイテムの後ろに挿入します。
最後に、残りのアイテムを並べ替えると、ここ.past
のクラスとの最後の項目は、コードされた後にそれらを挿入する必要があります。今のよう
//sort todo list-items by type and then date
function sortTodo() {
var itemDate = "";
var date = new Date();
$(".todo-list-item").each(function() {
var itemDate = new Date($(this).data("date"));
if($(this).hasClass('pinned')) {
$(".todo-list-item.pinned").sort(function(a,b) {
return date > itemDate;
}).each(function() {
$(".todo-list").prepend(this);
})
} else if(date > itemDate) {
$(this).addClass("past");
$(".todo-list-item.past").sort(function(a,b) {
return date > itemDate;
}).each(function() {
$(".todo-list").prepend(this);
})
} else {
$(".todo-list-item").not(".pinned, .past").sort(function(a,b) {
return date > itemDate;
}).each(function() {
$(".todo-list").append(this);
})
}
});
}
$(document).ready(function() {
sortTodo();
});
新しいピン留めされたアイテムを追加しない限り、ピンポンディングされたアイテムを必要に応じて上に置かないスクリプトであり、アイテムクラスが変更されたり削除されたりしても日付によってソートされません。
一度に1つのタスクを実行すると、結果はどうなりますか? – guest271314
他の条件で各条件を実行すると、ソートされて正しく固定されます –