我正在为我尝试构建的网站实现 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/