首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同位素过滤器不会对“布局”进行回调

同位素过滤器不会对“布局”进行回调
EN

Stack Overflow用户
提问于 2016-01-29 19:43:30
回答 1查看 313关注 0票数 1

我使用同位素过滤器与引导选项卡相结合,在它们自己的选项卡内容div中的两个同位素过滤器之间切换。

由于选项卡隐藏/显示选项卡内容,所以每次选项卡活动时,我都必须调用同位素layout命令。在完成同位素布局命令之后,我想控制向同位素容器添加一个css类。

但是,当我从对同位素实例的匿名回调调用jQuery的addClass()时,它从不触发:

代码语言:javascript
复制
$('a[data-toggle=tab]').on('shown.bs.tab', function (e) {
    if ( $($(this).attr('href') + '[class*=isotope-container]') ) {
            $($(this).attr('href')).isotope('layout', function() {
                $($(this).attr('href')).addClass('trans-height');
                console.log("My callback fired");
            });
    }
}

我从未见过控制台日志,也没有将trans-height添加到同位素容器中。

我确保我的同位素容器div包含一个带有子字符串isotope-container的类,并且对同位素layout的调用工作正常:如果我删除了这个代码,那么当选项卡显示时,我的同位素就会聚集起来,但是当它被包含时就会很好地展开。

我意识到我可以使用一个相对安全的setTimeout()来添加类,但是我想了解为什么回调没有启动。这似乎是做事情的正确方法。

你知道为什么回调没有启动吗?

谢谢!

编辑

我真的认为鲍里斯的建议会奏效,但当我这么做的时候,我看到了shown.bs.tab的第一个警报,但第二个警告从未发生过:

代码语言:javascript
复制
$('a[data-toggle=tab]').on('shown.bs.tab', function () {
            if ( $($(this).attr('href') + '[class*=isotope-container]') ) {

                $isotopeContainer = $($(this).attr('href'));
                $isotopeContainer.on('layoutComplete', function() {
                    alert("Layout is complete");
                    $(this).addClass('trans-height');
                });

                alert("Tab containing isotope has been shown");
                $($(this).attr('href')).isotope('layout');
            }
        });
EN

回答 1

Stack Overflow用户

发布于 2016-01-29 19:53:19

从文档来看,布局方法似乎不需要任何参数。

但是有一个layoutComplete事件,所以您可以尝试如下:

代码语言:javascript
复制
$('isotope-selector').on('layoutComplete', function() {
    $($(this).attr('href')).addClass('trans-height');
    console.log("My callback fired");
});
$('isotope-selector').isotope('layout');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35092739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档