我正在尝试能够根据选项值对大厅进行排序,默认情况下可以排序(当前有效,只是重新获取数据)、按字母顺序、按字母顺序和按容量排序。我有一些用于按字母顺序排序的 jQuery,我试图让它工作,但它似乎没有这样做。
jQuery/JavaScript 排序函数:
function sortHalls() {
let sortOption = document.getElementById("sortFilterText").value;
if (sortOption == "default") {
document.getElementById("hallWrapper").innerHTML = "";
fetchData();
} else if (sortOption == "alphabetically") {
let alphabeticallyOrdered = $('.hall').sort(function(a,b) {
let $aTitle = $(a).find('.hallName'),$bTitle = $(b).find('.title');
return String.prototype.localeCompare.call($aTitle.text().toLowerCase(),$bTitle.text().toLowerCase());
});
let wrapper = $("#hallWrapper");
wrapper.detach().empty().append(alphabeticallyOrdered);
$('body').append(wrapper);
} else if (sortOption == "realphabetically") {
} else if (sortOption == "capacity") {
}
}
Hall Div 结构:
`<div class="hall">
<div class="info">
<p>${data.Halls[halls[i]].Location[0].Address},${data.Halls[halls[i]].Location[1].Suburb}<br>Capacity: ${data.Halls[halls[i]].Room[0]["Standing Capacity"]}</p>
</div>
<div class="image">
<img class="img" src="${data.Halls[halls[i]].Description[4].Photos}" alt="${data.Halls[halls[i]]["Hall Name"]}">
</div>
<div class="hallNameBox">
<p class="hallName">${data.Halls[halls[i]]["Hall Name"]}</p>
</div>
</div>`;
HTML 选择:
<div id="sortFilter" class="flexColumn">
<label for="sortFilterText">Sort Community Halls</label>
<select id="sortFilterText" onchange="sortHalls()">
<option value="default">Default (Newest)</option>
<option value="alphabetically">Alphabetically</option>
<option value="realphabetically">Reverse Alphabetically</option>
<option value="capacity">Capacity (Highest)</option>
</select>
</div>