HTML, список заказов с помощью jquery, делайте это быстрее - PullRequest
1 голос
/ 14 марта 2012

Это мой код jquery для заказа списка:

$('ul').on('change','input',function(e){
    var $ul,$checked,$unchecked;
    $ul = $(e.delegateTarget);
    // markup <li><label><input type="checkbox"></label></li>
    $checked = $ul.find('input:checked').closest('li');
    $unchecked = $ul.find('input:not(:checked)').closest('li');
    $ul.empty().append($checked).append($unchecked);
});

С более чем 20 элементами списка, для переупорядочения требуется некоторое время. У вас есть предложение сделать это быстрее?

edit: вот моя разметка

<ul>
<li><label><input type="checkbox"/>1</label></li>
<li><label><input type="checkbox"/>2</label></li>
...
<li><label><input type="checkbox"/>98</label></li>
<li><label><input type="checkbox"/>99</label></li>

Спасибо, Christian

1 Ответ

0 голосов
/ 14 марта 2012

Вместо использования строковых селекторов вы можете передать .filter() функцию, которая должна быть немного быстрее:

        $checked = $ul.find('input').filter(function () {
            return (this.checked);
        }).closest('li');
        $unchecked = $ul.find('input').filter(function () {
            return (!this.checked);
        }).closest('li');

Я не уверен, что это дает, но это что-то попробовать.

...