我有一个带有图片库的页面,我正在使用带有过滤功能的 jquery wookmark 插件。然后我还想使用插件颜色框(wich wookmark 已经在他们的插件中提供了一个示例),并且我能够加入颜色框和过滤器系统。我脑海中的问题是,当我使用过滤器时,不是要显示 50 张照片,而是只有 5 张可见,我如何对 colorbox 说只显示那 5 张?
所以我像这样初始化颜色框:
$('li a').colorbox({
rel: 'lightbox', scalePhotos: true, maxWidth: '80%', maxHeight: '80%'
});
然后在过滤器的点击事件中,我认为最好的方法是,每当有点击时,从所有图像中删除颜色框,并仅为具有活动类的 li 内的项目再次初始化颜色框,如下所示:
var onClickFilter = function(event) {
var item = $(event.currentTarget), activeFilters = [];
item.toggleClass('active');
// Collect active filter strings
filters.filter('.active').each(function() {
activeFilters.push($(this).data('filter'));
});
handler.wookmarkInstance.filter(activeFilters, 'or');
//here i remove colorbox from every item
$.colorbox.remove();
//here i instantiate colorbox for active item
$('#tiles li.active a').colorbox({
rel: 'lightbox', scalePhotos: true, maxWidth: '80%', maxHeight: '80%'
});
}
这有点工作!例如,我加载了 100 张图片的页面,colorbox 库显示了 100 张要显示的图片;我单击一个过滤器,我看到 10 个图像,colorbox 提供 10 个图像显示,我单击另一个过滤器以添加更多图像,我看到 24 个图像,colorbox 将它的画廊刷新为 24。问题是,如果我再次单击相同的最后一个过滤器将其停用,colorbox 不再只看到 10 个图像,而是 24 个。