Я пытаюсь создать несколько сложную функцию сортировки, которая ни использует отделения, ни списки. К сожалению, два часа поиска с помощью Google не помогли мне.
Вот основная установка моего HTML:
<div id="all_elements">
<!-- one element -->
<div class="element">
<div class="wrapper">
<a href="/" title="links">
<img src="/img/image.jpg" border="0" alt="image" class="image" /></a>
<div class="details">
<h3><a href="/" title="title">Name (Sort Argument 1)</a></h3>
<div class="title"><a href="/" title="title">Title (Sort Argument 2)</a></div>
<div class="year">2010 (Sort Argumentt 3)</div>
<div class="country">Great Britain (Sort Argument 4)</div>
</div><!-- details -->
</div><!-- wrapper -->
</div><!-- element -->
</div> <!--all_elements-->
Установка немного сложна, но в основном .element является элементом, который должен быть отсортирован в алфавитном порядке или согласно содержанию h3, div.title, div.year или согласно div.country. Таким образом, пользователь сможет просмотреть содержание сайта, или отсортированного по имени, к году, страной или заголовком.
У меня есть этот отрывок jQuery с веб-сайта, но все мои попытки при попытке сказать ему использовать содержание, например, h3 к виду перестали работать. Прямо сейчас это сортирует в значительной степени случайным образом.
jQuery.fn.sort = function() {
return this.pushStack([].sort.apply(this, arguments), []);
};
function sortAscending(a, b) {
return a.innerHTML > b.innerHTML ? 1 : -1;
};
function sortDescending(a, b) {
return a.innerHTML < b.innerHTML ? 1 : -1;
};
$(document).ready(function() {
$("#sort").toggle(
function() {
$('#all_elements .element').sort(sortDescending).appendTo('#all_elements');
$(this).text("Sort Asc");
},
function() {
$('#all_elements .element').sort(sortAscending).appendTo('#all_elements');
$(this).text("Sort Desc");
});
});
Как я могу настроить функцию для сортировки содержания моего h3 или отделений?
Попробуйте вместо этого эти функции сравнения:
function sortAscending(a, b) {
return $(a).find("h3").text() > $(b).find("h3").text() ? 1 : -1;
};
function sortDescending(a, b) {
return $(a).find("h3").text() < $(b).find("h3").text() ? 1 : -1;
};