2015-09-04 55 views
1

我想过滤使用MixItUp在AJAX回调方法中动态创建的数据。我有10个部分,每个部分都有一个或多个过滤器。我面临的问题是,当我点击一个部分的过滤器时,所有其他部分的数据都被隐藏起来。当我检查DOM时,覆盖显示没有阻止没有发生。过滤器值都是唯一的。使用MixItUp过滤动态数据

// The "bindHandlers" method will listen for whenever a button is clicked. 
bindHandlers: function() { 
    var self = this; 
    self.$filters.on('click', 'a', function (e) { 
     self.parseFilters(); 
    }); 
}, 

parseFilters: function() { 
    var self = this; 
    // loop through each filter group and grap the active filter from each one. 
    for (var i = 0, group; group = self.groups[i]; i++) { 
     group.active = []; 
     group.$inputs.each(function() { 
      if ($(this).find('.selected').length > 0) { 
       group.active.push($(this).attr('data-filter')); 
      } 
     }); 
    } 
    self.concatenate(); 
}, 

concatenate: function() { 
    var self = this; 

    self.outputString = ''; // Reset output string 

    for (var i = 0, group; group = self.groups[i]; i++) { 
     self.outputString += group.active; 
    } 

    // If the output string is empty, show all rather than none:  
    !self.outputString.length && (self.outputString = 'all'); 

    // Send the output string to MixItUp via the 'filter' method:  
    if (self.$container.mixItUp('isLoaded')) { 
     self.$container.mixItUp('filter', self.outputString); 
    } 
} 

上面写的AJAX代码回调函数和click事件触发的parseFilter功能,达到连击和outputString包含正确的过滤器名称仍仅为它会隐藏所有其他部分瓷砖这混淆了我。

任何人都可以帮助我。就我的谷歌搜索而言,我们需要设置数据过滤器,并给出与过滤元素的类名相同的值。另外我使用淘汰赛将数据绑定

回答

0

最后我能做到这一点。我不知道它的完美解决方案和所有,但我做到了这一点。

对于每个部分有两个div,一个用于筛选按钮,第二个用于报告拼贴,我给了独特的类(filter div)和id(报告拼贴),并在AJAX回调函数中绑定了代码这

function SetSectionOneData() { 

var $container = $('#SectionOneReports'), // Report tiles holding container id. 
$controls = $('.cd-tab-filter'); // Filter button holding div 

$container.mixItUp({ 
    animation: { 
     duration: 700, 
     effects: 'fade translateY(600%) stagger(35ms)', 
     easing: 'cubic-bezier(0.86, 0, 0.07, 1)', 
     reverseOut: true 
    }, 
    controls: { 
     enable: false 
    } 
}); 

$controls.on('click', '.filter', function() { 
    var $btn = $(this), 
     filter = $btn.attr('data-filter'); 
    $btn.addClass('FltrBtn_active'); 
    var btnId = $btn.attr('id'); 
    if (btnId) { 
     var productId = btnId.split('_')[1]; 
     var linkId = btnId.split('_')[2]; 
     $('*[id*=Filter_' + productId + ']:visible').each(function() { 
      if ($(this).attr('id').split('_')[2] != linkId) { 
       $(this).removeClass('FltrBtn_active'); 
      } 
     }); 
    } 
    $container.mixItUp('filter', 'none', function() { 
     $container.mixItUp('filter', filter); 
    }); 
}); 

}

如果有人发现有更好的/优化的解决方案,请让我知道。

不管怎样谢谢大家