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

时间:2013-07-05 20:22:43

标签: javascript jquery

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

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元素移出页面顶部。曾经是这个动画工作正常的情况。但是,当我使用animate()将回调替换为console.log()以形成显示的代码时,动画停止工作,但仍然会向控制台记录一条消息。即使回调被触发,为什么动画仍然没有运行?

2 个答案:

答案 0 :(得分:0)

问题可能是您在使用live时正在使用bind。据我所知,jquery 1.9中删除了live

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

除此之外,我认为唯一可能错误的是你需要为容器类设置一个position属性,否则top不会有任何影响。

Fiddle link with working code

答案 1 :(得分:0)

需要为position: relative;元素设置

container才能对其进行动画处理。感谢Jan Dvorak指出这一点。我仍然不知道为什么事情以前工作,即使我改变的唯一的东西是javascript,而不是我的样式表或任何东西......