javascript - 包含动画选项时 Jquery 回调不起作用(砌体插件)

标签 javascript jquery jquery-plugins jquery-callback

我正在为我尝试构建的网站实现 David DeSandro 的 JQuery Masonry 插件。我正在尝试在砌体函数上运行回调,以便我可以在它运行后滚动到页面中的相关部分,但由于某种原因,当我打开动画时无法让它工作。可以在 http://desandro.com/demo/masonry/docs/#options 查看文档.当我运行以下代码时,它工作正常,并且只有在砌体功能运行后才会发出警报:

$wall.masonry(
{
columnWidth: 216,
itemSelector: '.box:not(.invis)',
animate: false
},
function()
{
alert("Finished?");
}
);

但是,当我运行包含动画选项的以下代码时,警报会在动画完成之前运行:

$wall.masonry(
{
columnWidth: 216,
itemSelector: '.box:not(.invis)',
animate: true,
animationOptions: {
  duration: speed,
  queue: false
}
},
function()
{
alert("Finished?");
}
);

我真的很感激任何人能给我任何关于如何防止警报发生直到动画完成的指示,因为我很困惑!非常感谢您的帮助,

戴夫

最佳答案

有些事情你可以做,但要在你的意义上工作需要一些小技巧:

传递给 animationOptions 的对象可以采用 complete 属性,它定义了一个将在动画完成后触发的函数。

问题是,每个 block 都会出现这种情况,因为每个 block 都是单独动画的。但是你可以像这样解决这个问题:

var boxCount = $wall.find('box').size(),
    counter = 0,
    onComplete = function() {
        if (counter < boxCount) counter++;
        else {
            alert("Finished?"); // <-- Here goes your actual callback!
            counter = 0;
        }
    }

$wall.masonry({
    columnWidth: 216,
    itemSelector: '.box:not(.invis)',
    animate: true,
    animationOptions: {
        duration: speed,
        queue: false,
        complete: onComplete
    }
});

关于javascript - 包含动画选项时 Jquery 回调不起作用(砌体插件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750303/

相关文章:

javascript - 在 Safari 上获取响应式图片的 currentSrc

javascript - 使用 jquery 为多个元素制作交错的淡入淡出循环

javascript - 为什么我的脚本在 JS 中被事件处理程序中断

javascript - 如何在 JS 文件中使用导出的结构?

javascript - 测试开关盒 - 单元测试

javascript - 防止文本区域垂直滚动

javascript - 较小的 jQuery 插件(以 KB 为单位)是否会比具有相同功能但尺寸较大的相同插件表现更好?

javascript - 我应该使用其他东西来代替 setTimeout 吗?

javascript - jQuery 必需(依赖表达式)无法正常工作

javascript - 如何使用 lightbox-0.5 在一页中添加两个画廊