2017-08-29 176 views
0

我有以下的HTMLjQuery的排序列表

<ul class="aa-checkbox-list aa-tick_group_test-list"> 

    <li data-aa-position="1" data-aa-checked="1" data-aa-name="B"><label> 
    <input class="custom-control-input" name="some_tick" type="checkbox"> 
</label></li> 


    <li data-aa-position="2" data-aa-checked="1" data-aa-name="A"><label> 
    <input class="custom-control-input" name="some_tick2" type="checkbox"> 
</label></li> 


<li data-aa-position="3" data-aa-checked="0" data-aa-name="D"><label> 
    <input class="custom-control-input" name="some_tick4" type="checkbox"> 
</label></li> 


<li data-aa-position="4" data-aa-checked="0" data-aa-name="C"><label> 
    <input class="custom-control-input" name="some_tick3" type="checkbox"> 
</label></li> 

</ul> 

而下面的jQuery:

function tick_group_test__sort(){ 
    $(".aa-tick_group_test-list li").sort(sort_li).appendTo('.aa-tick_group_test-list'); 

    function sort_li(a, b) { 
     var x = ($(a).data('aa-checked') < $(b).data('aa-checked')) ? -1 : ($(a).data('aa-checked') > $(b).data('aa-checked')) ? 0 : 1; 
     return x; 
    } 
}; 

我首先想基于订购的列表“AA-检查“,因此包含检查输入的元素位于顶部

然后,对于检查过的(1),按照字母顺序对它们进行排序,对于未检查的排序(0),按照它们的”aa-position “

一直试图小时,不能为我的生命数字出来

回答

1

您正在寻找此sort回调函数:

function sort_li(a, b) { 
    return $(b).data('aa-checked') - $(a).data('aa-checked') 
     || ($(a).data('aa-checked') 
       ? $(a).data('aa-name').localeCompare($(b).data('aa-name')) 
       : $(a).data('aa-position') - $(b).data('aa-position') 
      ); 
} 
+0

完美的作品,非常感谢你,我的天堂”自从我发了帖子以后,我就停止了这个工作 – Lee