MixTtup与Bootstrap选项卡有关

时间:2016-03-23 14:35:14

标签: javascript jquery twitter-bootstrap mixitup

我正在使用MixitUp和bootstrap标签,现在我已经阅读了一些things,但它还没有解决问题。

This也无法解决问题

我能够用最少的代码在codepen中重现这个问题。 http://codepen.io/anon/pen/aNWwZL

问题是,在不同标签中应用过滤器时,它们会停止工作。

摄制:

  1. 在标签1中应用过滤器
  2. 在标签2中应用过滤器
  3. 再次尝试并在标签1中应用过滤器
  4. 在第3步,过滤器不再有效。

    我一直试图解决这个问题几天,我被困住了。 以下是处理选项卡之间切换的一些代码:

    $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
        var target = $(e.target).attr('href');
        if (target === "#TvShowTab") {
          if (!$('#tvList').mixItUp('isLoaded')) {
            $('#tvList').mixItUp();
          }
        }
        if (target === "#MoviesTab") {
          if (!$('#movieList').mixItUp('isLoaded')) {
                $('#movieList').mixItUp();
          }
        }
    });
    

1 个答案:

答案 0 :(得分:1)

我已经能够通过确保在按下选项卡时调用mixItUp(' destroy')来解决此问题。

if (target === "#TvShowTab") {
  if ($('#movieList').mixItUp('isLoaded'))
  {       
    $('#movieList').mixItUp('destroy');  
  }      
  if (!$('#tvList').mixItUp('isLoaded')) {
    $('#tvList').mixItUp();        
  }
}

如果您希望过滤器在标签之间保持不变,则可以在运行destroy api之前使用mixItUp(' getState')。这是添加后的样子。

$(function() {
$('#movieList').mixItUp();


$('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
    var target = $(e.target).attr('href');
    var activeState = ''
    if (target === "#TvShowTab") {
        if ($('#movieList').mixItUp('isLoaded')) {
            activeState = $('#movieList').mixItUp('getState');
            $('#movieList').mixItUp('destroy');
        }
        if (!$('#tvList').mixItUp('isLoaded')) {
            $('#tvList').mixItUp({
                load: {
                    filter: activeState.activeFilter || 'all',
                    sort: activeState.activeSort || 'default:asc'
                }
            });
        }
    }
    if (target === "#MoviesTab") {
        if ($('#tvList').mixItUp('isLoaded')) {
            activeState = $('#tvList').mixItUp('getState');
            $('#tvList').mixItUp('destroy');
        }
        if (!$('#movieList').mixItUp('isLoaded')) {
            $('#movieList').mixItUp({
                load: {
                    filter: activeState.activeFilter || 'all',
                    sort: activeState.activeSort || 'default:asc'
                }
            });
        }
    }
});
});