jquery сортировать список по статусу элемента div - PullRequest
0 голосов
/ 26 июля 2011

У меня есть список, содержащий div в каждой строке. Одним из элементов каждого div является метка. Метки содержат информацию о входе / выходе для маркеров, расположенных на карте (также в затененной области). Я хочу, чтобы они были отсортированы в соответствии с статусом входа / выхода ярлыков. То, что я сделал до сих пор, имеет код ниже Пользователи могут изменять масштаб затененной области, которая меняет состояние маркеров. Поэтому список следует обновлять в соответствии со статусом маркеров на карте. Все маркеры IN должны быть в верхней части списка, а выходы должны быть помещены после «IN».

** У меня есть метод, который делает это с 30 строками. Я хочу использовать этот метод.

A - мой код цикла тестирования, чтобы убедиться, что у меня есть свойство html меток in / Out. B - это код, который не работает в данный момент. Может кто-нибудь знакомый, пожалуйста, посмотрите, что отсутствует в коде.

Заранее спасибо.

Код HTML

<div id="divsec_13A North Buderim Bvd Buderim" name="13A North Buderim Bvd Buderim">
    <input type="checkbox" name="checkbox_13A  North Buderim Bvd Buderim" id="4" value="13A North Buderim Bvd Buderim">
    <a onclick="$.fn.centerMarker('13A  North Buderim Bvd Buderim');">13A  North Buderim Bvd Buderim</a>
    <label type="label" name="inOut_13A  North Buderim Bvd BuderimLabel" id="inOut_13A  North Buderim Bvd BuderimLabel" class="inOutControl">In</label>
</div>

PS: список такой:

флажок | адрес1 | В

флажок | адрес2 | Из

флажок | адрес3 | В

флажок | адрес4 | Out

* * Тысяча двадцать-один А) * * тысяча двадцать две
$(this.children()).each(function (ind){                 

      var html = $(this).children().filter(".inOutControl").html();
      alert(html);  
}); 

В) * * тысячу двадцать-пять

   $("#list").sort(sortTest);

        var sortTest = function(a,b){   
            //return $(a).find(".inOutControl").html() > $(b).find(".inOutControl").html() ? 1 : -1;        
            return $(this, a).filter(".inOutControl").html() != $(this, b).filter(".inOutControl").html() ? 1 : -1;  
        };

PS: похоже на это , но я не знаю, почему оно не работает.

1 Ответ

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

Это работает .. только в случае, если это кому-то нужно ...

$("#list").sortList();

$.fn.sortList = function(){
        var $list = $(this);
        var listItems = $list.children().get(); 
        listItems.sort( function(a,b){
            return $( a).find(".inOutControl").html() > $( b).find(".inOutControl").html() ? 1 : -1;  
        });
        $.each(listItems, function(idx, itm){$list.append(itm);});
        return this;
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...