Bootstrap 标签的 MixItUp 问题
MixItUp issue with Bootstrap Tabs
我正在尝试将 MixitUp 与 bootstrap 选项卡一起使用,现在我已经阅读了一些 things 但它没有解决问题。
This也没有解决问题
我已经能够使用最少的代码在 codepen 中重现该问题。
http://codepen.io/anon/pen/aNWwZL
问题是在不同的选项卡中应用过滤器时,它们会停止工作。
转载:
- 在选项卡 1 中应用过滤器
- 在选项卡 2 中应用过滤器
- 再次尝试在选项卡 1 中应用过滤器
在第 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();
}
}
});
我已经能够通过确保在按下选项卡时调用 mixItUp('destroy') 来解决这个问题。
if (target === "#TvShowTab") {
if ($('#movieList').mixItUp('isLoaded'))
{
$('#movieList').mixItUp('destroy');
}
if (!$('#tvList').mixItUp('isLoaded')) {
$('#tvList').mixItUp();
}
}
如果您希望您的过滤器在标签中持续存在,您可以在 运行 销毁 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'
}
});
}
}
});
});
我正在尝试将 MixitUp 与 bootstrap 选项卡一起使用,现在我已经阅读了一些 things 但它没有解决问题。
This也没有解决问题
我已经能够使用最少的代码在 codepen 中重现该问题。 http://codepen.io/anon/pen/aNWwZL
问题是在不同的选项卡中应用过滤器时,它们会停止工作。
转载:
- 在选项卡 1 中应用过滤器
- 在选项卡 2 中应用过滤器
- 再次尝试在选项卡 1 中应用过滤器
在第 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();
}
}
});
我已经能够通过确保在按下选项卡时调用 mixItUp('destroy') 来解决这个问题。
if (target === "#TvShowTab") {
if ($('#movieList').mixItUp('isLoaded'))
{
$('#movieList').mixItUp('destroy');
}
if (!$('#tvList').mixItUp('isLoaded')) {
$('#tvList').mixItUp();
}
}
如果您希望您的过滤器在标签中持续存在,您可以在 运行 销毁 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'
}
});
}
}
});
});