リスト項目の内容で順序付けられていないリストを並べ替えたい。デフォルトでは、名前でアルファベット順に並べ替えるオプションを使用して、日付で並べ替えます。
<select id="test">
<option selected="selected" value="date">Date</option>
<option value="alphabetically">Alphabetically</option>
</select>
<ul id="list">
<li><p class="name">Peter</p><span class="date">10.12.12</span></li>
<li><p class="name">Mary</p><span class="date">06.01.13</span></li>
<li><p class="name">Paul</p><span class="date">19.12.12</span></li>
<li><p class="name">Allen</p><span class="date">21.12.12</span></li>
<li><p class="name">James</p><span class="date">03.01.13</span></li>
<li><p class="name">Vicki</p><span class="date">12.01.13</span></li>
<li><p class="name">Brock</p><span class="date">01.01.13</span></li>
<li><p class="name">Dana</p><span class="date">31.12.12</span></li>
<li><p class="name">Frank</p><span class="date">16.12.12</span></li>
<li><p class="name">Gil</p><span class="date">09.01.13</span></li>
<li><p class="name">Helen</p><span class="date">14.01.13</span></li>
</ul>
これまでの私の試み:
function sortUnorderedList(ul, sortDescending) {
if (typeof ul == "string") ul = document.getElementById(ul);
var lis = ul.getElementsByTagName("li");
var vals = [];
for (var i = 0, l = lis.length; i < l; i++)
vals.push(lis[i].innerHTML);
vals.sort();
if (sortDescending) vals.reverse();
for (var i = 0, l = lis.length; i < l; i++)
lis[i].innerHTML = vals[i];
}
$(document).ready(function () {
var desc = false;
document.getElementById("test").onchange = function () {
sortUnorderedList("list", desc);
desc = !desc;
return false;
};
});
function sortDescending(a, b) {
var date1 = $(a).find(".date").text();
date1 = date1.split('.');
date1 = new Date(date1[2], date1[1] - 1, date1[0]);
var date2 = $(b).find(".date").text();
date2 = date2.split('.');
date2 = new Date(date2[2], date2[1] - 1, date2[0]);
return date1 < date2 ? 1 : -1;
}
$(document).ready(function () {
$('ul > li').sort(sortDescending).appendTo('ul');
});
ページが読み込まれると、リストは "日付" スパン コンテンツの値で並べ替えられます。メニューの変更を選択すると、リストがアルファベット順に並べ替えられます。しかし、「日付」に戻すと、リストの日付が正しく降順でソートされません。
誰でも助けてもらえますか?クラス「名前」でソートするためにアルファベット順でソートしたいと思います。日付がクラス「日付」でソートされるのと同じ方法です。
乾杯、JV