javascript/jQuery:animate()不运行,但回调运行



我正在尝试调试我编写的回调函数,该函数在单击页面上的某些链接时会触发。有一段时间,一切都很好,但有问题,所以我开始尝试调试我的回调。这是我的代码的当前状态:

function doStuff() {
    var container = $("#content-container");
    var ch = container.height();
    container.animate({
        top : '-=' + ch + 'px'
    }, 500, function() {console.log('animating');});
}
$(".content-link").live("click", function(){
    doStuff();
    return false;
});

动画会将#content-container元素从页面顶部移开。过去的情况是,这部动画效果很好。然而,当我用console.log()替换对animate()的回调以形成所示的代码时,动画停止了工作,但控制台中仍会记录一条消息。为什么即使正在启动回调,动画也不运行?

问题可能是您在使用live,而本应使用bind。据我所知,live在jquery 1.9中被删除了。

$(".content-link").bind("click", function(){
    doStuff();
    return false;
});

除此之外,我认为唯一可能错误的是,您需要为容器类设置一个position属性,否则顶部不会有任何效果。

带有工作代码的Fiddle链接

container元素需要设置position: relative;才能设置动画。感谢Jan Dvorak指出这一点。尽管我唯一改变的是javascript,而不是我的样式表或任何东西,但我仍然不知道为什么以前的东西能正常工作。。。

最新更新