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

Javascript 包含动画选项时Jquery回调不起作用(砌体插件),javascript,jquery,jquery-plugins,jquery-callback,Javascript,Jquery,Jquery Plugins,Jquery Callback,我正在为我试图构建的网站实现David DeSandro的JQuery砌体插件。我正在尝试对砌体函数运行回调,以便在它运行后可以滚动到页面中的相关部分,但由于某些原因,当我打开动画时,无法使其工作。这些文档可以在上看到。当我运行以下代码时,它工作正常,警报仅在砌体函数运行后发生: $wall.masonry( { columnWidth: 216, itemSelector: '.box:not(.invis)', animate: false }, function() { alert("Fi

我正在为我试图构建的网站实现David DeSandro的JQuery砌体插件。我正在尝试对砌体函数运行回调,以便在它运行后可以滚动到页面中的相关部分,但由于某些原因,当我打开动画时,无法使其工作。这些文档可以在上看到。当我运行以下代码时,它工作正常,警报仅在砌体函数运行后发生:

$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?");
}
);
我真的很感激任何人能给我指点如何防止警报发生,直到动画完成,因为我被难住了!非常感谢你的帮助


Dave

你可以做一些事情,但要想在你的意识中发挥作用,需要一点技巧:

传递给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
    }
});

你可以做一些事情,但要想在你看来奏效,需要一点技巧:

传递给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
    }
});

您是否检查了速度变量是否定义正确?是的,速度变量定义正确,砌体代码和动画运行良好,只是如果动画打开,警报不会等到动画完成后才运行。非常感谢您的帮助,任何其他想法都将不胜感激!您是否检查了速度变量是否定义正确?是的,速度变量定义正确,砌体代码和动画运行良好,只是如果动画打开,警报不会等到动画完成后才运行。非常感谢您的帮助,任何其他想法都将不胜感激!你是一个绝对的天才,非常感谢你,这正是问题所在,我没有意识到它会在每个动画之后运行。非常感谢你的帮助,非常感谢。不幸的是,我没有足够的声望来支持你的答案,否则我会做的,因为它是完全正确的,再次非常感谢:很好,它工作了。如果这个答案对你有用,请把它标记为“正确”。对不起,我错过了!我现在已将其标记为正确,再次非常感谢您的帮助!你是一个绝对的天才,非常感谢你,这正是问题所在,我没有意识到它会在每个动画之后运行。非常感谢你的帮助,非常感谢。不幸的是,我没有足够的声望来支持你的答案,否则我会做的,因为它是完全正确的,再次非常感谢:很好,它工作了。如果这个答案对你有用,请把它标记为“正确”。对不起,我错过了!我现在已将其标记为正确,再次非常感谢您的帮助!