过滤"溢价"页面加载选项使用混合它

时间:2016-05-04 16:28:58

标签: javascript jquery html css mixitup

我有一个网格设置,显示了很多列表。在这些列表中有溢价'类别。 I.e - 食品清单1,住宿清单1,食品清单2,优质食品清单。

基本上,它们按照HTML中设置的顺序加载。但我想列出“溢价”和#39;首先列出"所有"选择,然后首先当类别"食物"被选中。

有人可以帮帮我吗?在这里小提琴 - https://jsfiddle.net/r1yd01fq/2/

$('#Container').mixItUp();

2 个答案:

答案 0 :(得分:0)

这应该为" All"选项

$(document).on("click", ".filter", function() {
  var choice = $(this).data("filter");
  switch (choice) {
    case "all":
      $("#Container div").attr("data-sort", 0);
      $("#Container div.premium").attr("data-sort", 1);
      break;
  }
  var d = $("#Container div");
  d.sort(function(a, b){
    return $(b).data("sort")-$(a).data("sort")
  });
  $("#Container").html(d);
});

答案 1 :(得分:0)

找到一种相对简单的方法。使用.insertA结尾位于容器顶部的优质div支架。然后我使用了一个shuffle插件随机化了高级列表,所以首先加载的那些不会一直显示。

https://jsfiddle.net/r1yd01fq/4/

$.fn.shuffle = function() {

    var allElems = this.get(),
        getRandom = function(max) {
            return Math.floor(Math.random() * max);
        },
        shuffled = $.map(allElems, function(){
            var random = getRandom(allElems.length),
                randEl = $(allElems[random]).clone(true)[0];
            allElems.splice(random, 1);
            return randEl;
       });

    this.each(function(i){
        $(this).replaceWith($(shuffled[i]));
    });

    return $(shuffled);

};

// Insert all premium listings first
$(".premium").insertAfter(".prem");

// Shuffle premium listing so they appear randomly
$('.premium').shuffle();

// Instantiate MixItUp:
$('#Container').mixItUp({});