jquery根据div元素状态对列表进行排序

时间:2011-07-26 00:02:57

标签: jquery list sorting

我有一个列表,每行包含一个div。每个div的一个元素是标签。标签包含位于地图中的标记的输入/输出信息(也在阴影区域中)。我希望它们根据标签输入/输出状态进行排序。到目前为止我所做的是使用下面的代码。 用户可以更改阴影区域的比例,从而改变标记的状态。因此,应根据地图上标记的状态更新列表。所有标记IN应该在列表的顶部,并且出局应该放在'INs'之后。

**我有30行的方法。我想使用这种方法。

A是我的测试循环代码,以确保我正确拥有我的输入/输出标签html属性。 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 |出

A)

$(this.children()).each(function (ind){                 

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

B)

   $("#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:与this类似,但我不知道它为什么不起作用。

1 个答案:

答案 0 :(得分:0)

这可行..如果有人需要它,以防万一...

$("#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;
    };