Заказ сложного неупорядоченного списка с помощью JavaScript - PullRequest
2 голосов
/ 18 августа 2011

Я ищу способ сортировки довольно сложного неупорядоченного списка HTML с использованием стандартного javascript или jQuery.

Пожалуйста, просмотрите HTML, порядок должен быть алфавитным и основываться на HTML, найденном внутри1003 *, но необходимо построить порядок верхнего уровня li (с уникальным ключевым словом_xxx).Я только что вставил 2 списка из десятков.

<ul class="keywords">
    <li id="keyword_185">
        <div class="icon_keyword"></div>
        <input type="hidden" class="keywordLabel" value="More opening hours">
        <div class="data-wrapper">
            <div class="keywordType">
                <span class="oh">Payment methods</span>
            </div>
            <div class="keywordValue">
                <span id="keyword_185" class="oh">Credit Card, PayPal</span>
            </div>
        </div>
        <a class="edit" title="Edit keywords"></a>
        <a class="delete" title="Delete keywords"></a>
    </li>
    <li id="keyword_192">
        <div class="icon_keyword"></div>
        <input type="hidden" class="keywordLabel" value="Monday to Friday: 8:30am to 6:30pm Saturday: 9pm to 6:30pm Sunday: 10 - 4pm">
        <div class="data-wrapper">
            <div class="keywordType">
                <span class="oh">Opening Hours</span>
            </div>
            <div class="keywordValue">
                <span id="keyword_192" class="oh">Monday to Friday: 8:30am to 6:30pm<br>Saturday: 9pm to 6:30pm<br>Sunday: 10 - 4pm</span>
            </div>
        </div>
        <a class="edit" title="Edit keywords"></a>
        <a class="delete" title="Delete keywords"></a>
    </li>
</ul>

Спасибо

Ответы [ 3 ]

4 голосов
/ 18 августа 2011
var list = $('ul.keywords');
var listItems = $('li', list);

listItems.sort(function (a, b) {
    return $(a).text() > $(b).text() ? 1 : -1;
});

list.append(listItems);

Вы можете sort список элементов (объекты jQuery имеют все методы Array, включая Array.prototype.sort).

В функции сравнения просто сравните текстовое содержимое элементов списка.Отдельные буквы будут впоследствии сравниваться в соответствии с их положением в алфавите (на самом деле таблица Unicode).Например, k > a - это true.

Наконец, просто добавьте элементы в список.

Демонстрация: http://jsbin.com/igesic

2 голосов
/ 18 августа 2011

Посмотрите на это, оно точно соответствует вашим требованиям.

http://james.padolsey.com/javascript/sorting-elements-with-jquery/

0 голосов
/ 18 августа 2011

Помогает ли это?

var arr;
$('.keyword span').each( function( i, el){
    arr[i] = $(el).text();
});
arr.sort();

Я проверил это на этой странице вопросов, код ниже упорядочивает список связанных вопросов в правой колонке

var arr;
$('.question-hyperlink').each( function( i, el){
    arr[i] = $(el).text();
});
arr.sort();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...