如何根据给定列表/数组中的div id对div元素进行排序?

时间:2014-09-15 05:35:23

标签: jquery html

我在变量中有排序顺序。

   var sortorder = "Amazon,Soap,Drugstore,Walmart,Walgreens".split(',');

我的要求是它应该按照上面给出的顺序排列,如果某个div的id在数组中不可用,那么它应该被追加到最后。下面的代码是按顺序排序数据,但问题是如果div不存在于数组中,那么它不会将该div移动到最后一个。

HTML

    <div class="wtb_results_online right_results wtb_results_online_results_vantage">
      <div class="results">
            <h3><span>Online Retailers</span></h3>
            <div class="result_item result_innerdv" id="axyz"><span class="year">axyz</span><a class="btn_pack_sizes" href="javascript:void(0);"></a></div>
            <div class="result_item result_innerdv" id="Drugstore"><span     class="year">Drugstore</span><a class="btn_pack_sizes" href="javascript:void(0);"></a></div>
            <div class="result_item result_innerdv" id="Walgreens"><span class="year">Walgreens</span><a class="btn_pack_sizes" href="javascript:void(0);"></a></div>
            <div class="result_item result_innerdv" id="flipcart"><span     class="year">flipcart</span><a class="btn_pack_sizes" href="javascript:void(0);"></a></div>
            <div class="result_item result_innerdv" id="Amazon"><span class="year">Amazon</span><a class="btn_pack_sizes" href="javascript:void(0);"></a></div>
            <div class="result_item result_innerdv" id="Walmart"><span class="year">Walmart</span><a class="btn_pack_sizes" href="javascript:void(0);"></a></div>
         </div>
    </div>

的jQuery

  var sortorder = "Amazon,Soap,Drugstore,Walmart,Walgreens".split(',');

    $.each(function(index,value){
        $('.wtb_results_online_results_vantage .result').append($('.wtb_results_online_results_vantage .result'));

    });
    $('.wtb_results_online_results_vantage .results > div').each(function(){
        if($.inArray($(this).attr('id'), sortorder)==-1){
            $('.wtb_results_online_results_vantage .results').append($('.wtb_results_online_results_vantage .results'));
        }
    });       

1 个答案:

答案 0 :(得分:5)

只需尝试这个

$.each(sortorder,function(index,value){
    if($.inArray(value, sortorder)!==-1){
        $('#container').append($('#'+value));
    }
});

$('#container div').each(function(){
    if($.inArray($(this).attr('id'), sortorder)==-1){
        // inArray will return -1, if the element was not found in array
        $('#container').append($('#'+$(this).attr('id')));
    }
});

更新了Fiddle

修改:更新了Fiddle