Javascript 包含动画选项时Jquery回调不起作用(砌体插件)
我正在为我试图构建的网站实现David DeSandro的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
$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
}
});
您是否检查了速度变量是否定义正确?是的,速度变量定义正确,砌体代码和动画运行良好,只是如果动画打开,警报不会等到动画完成后才运行。非常感谢您的帮助,任何其他想法都将不胜感激!您是否检查了速度变量是否定义正确?是的,速度变量定义正确,砌体代码和动画运行良好,只是如果动画打开,警报不会等到动画完成后才运行。非常感谢您的帮助,任何其他想法都将不胜感激!你是一个绝对的天才,非常感谢你,这正是问题所在,我没有意识到它会在每个动画之后运行。非常感谢你的帮助,非常感谢。不幸的是,我没有足够的声望来支持你的答案,否则我会做的,因为它是完全正确的,再次非常感谢:很好,它工作了。如果这个答案对你有用,请把它标记为“正确”。对不起,我错过了!我现在已将其标记为正确,再次非常感谢您的帮助!你是一个绝对的天才,非常感谢你,这正是问题所在,我没有意识到它会在每个动画之后运行。非常感谢你的帮助,非常感谢。不幸的是,我没有足够的声望来支持你的答案,否则我会做的,因为它是完全正确的,再次非常感谢:很好,它工作了。如果这个答案对你有用,请把它标记为“正确”。对不起,我错过了!我现在已将其标记为正确,再次非常感谢您的帮助!