jQuery: сортировка div в соответствии с содержанием различных sub div - PullRequest
7 голосов
/ 23 марта 2010

Я пытаюсь создать довольно сложную функцию сортировки, которая не использует ни div, ни списки. К сожалению, два часа поиска в 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 или div?

1 Ответ

8 голосов
/ 23 марта 2010

Попробуйте вместо этого следующие функции сравнения:

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;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...