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

时间:2011-01-20 17:16:07

标签: 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?");
}
);

我真的很感激任何人可以给我的指示如何防止警报发生,直到动画完成,因为我很难过!非常感谢你的帮助,

戴夫

1 个答案:

答案 0 :(得分:6)

你可以做些什么,但是按照你的意义工作需要一个小小的黑客:

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

问题是,这是每个块的情况,因为每个块都是单独动画的。但你可以这样解决这个问题:

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
    }
});