如何从click()函数内的动画队列返回true / false?

时间:2009-03-07 21:19:32

标签: javascript jquery

这对我来说似乎很棘手,我觉得我在这里忽略了一些简单的事情。 你能帮我找到吗?

基本上,情况就是这样 (名称不重要的变量用大写字母命名):

$('a').filter('somecriteria').each(function() {
    var self = $(this);
    self.click(function() {
        B.animate({ something: somevalue }, { duration: "fast", complete: function(){
                return true; // <--- see notes below 
            }  
        });
        return false;
    });
});

注意: 如何让这个return成为return发送的click(),以便只有在animate()完全完成后才能将用户带到新页面(注意:在我的真实中)代码我有三个animate()链接在一起)。 我需要这样做,因为动画被切断,新页面过早加载。当从click()发送return false直到动画真正结束时,动画才会完全生效。

我尝试捕获链接的href属性并执行window.location = capturedlink而不是return true。 这有效,但如果可能的话,我想避免这种情况,因为有些人因安全问题而禁止更改位置。

还有另一种方法可以让jQuery在动画中间保持更改为新的URL吗?

非常感谢你查看这个问题。

安德烈

1 个答案:

答案 0 :(得分:4)

我害怕捕捉href方式是做你想做的最明显的方式。我不确定如果执行以下操作会绕过那些在安全设置中禁用更改位置的人,但您可以尝试一下:

$('a').filter('somecriteria').each(function() {
    var self = $(this);
    self.click(function() {
        if(self.hasClass('animated')) return true; // return true if already animated
        B.animate({ something: somevalue }, { duration: "fast", complete: function(){
                self.addClass('animated').click(); // fire the click event
            }  
        });
        return false;
    });
});