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

javascript/jQuery:animate()不运行,但回调会运行,javascript,jquery,Javascript,Jquery,我正在尝试调试我编写的回调函数,该函数在单击页面上的某些链接时触发。有一段时间,一切都很好,但它是有缺陷的,所以我开始尝试调试我的回调。以下是我的代码的当前状态: function doStuff() { var container = $("#content-container"); var ch = container.height(); container.animate({ top : '-=' + ch + 'px' }, 500,

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

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;
});

动画将
#内容容器
元素从页面顶部移出。过去的情况是,这个动画效果很好。但是,当我将对
animate()
的回调替换为
console.log()
以形成显示的代码时,动画停止工作,但控制台仍记录了一条消息。为什么即使启动了回调,动画也没有运行?

问题可能是您正在使用
live
,而您应该使用
bind
。据我所知,
live
在jquery1.9中被删除

$(".content-link").bind("click", function(){
    doStuff();
    return false;
});
除此之外,我认为唯一错误的是需要为容器类设置position属性,否则top不会产生任何效果


位置:相对位置容器
元素设置code>,以便为其设置动画。感谢扬·德沃夏克指出这一点。我仍然不知道为什么以前的事情可以正常工作,尽管我唯一更改的是javascript,而不是我的样式表或任何东西…

live
在jQuery 1.6中被弃用,并从jQuery 1.9中删除。在
上使用
ch
的值是多少?当我将
ch
记录到控制台时,它是容器的高度,大约2200 px。如果我将
container.html()
登录到控制台,那么我将获得我希望该元素包含的html。因此,
container
引用的对象肯定是正确的。可能是container.height()和container top的值相同吗?@jayhandren如果元素未定位,其
top
属性将无效no,no,no。请阅读注释。这与问题无关。我已经按照建议将
live
更改为
on
,但没有任何改变。@jayhendren看看我包含的小提琴链接-代码确实有效。你说得对,我在你的小提琴中将
bind
更改为
live
,这破坏了代码,但这不是我代码中的罪魁祸首(我想我有一个旧版本的jQuery)@jayhendren我已经向您展示了一个代码示例,该代码只处理绑定更改和css中的
位置:relative
。如果这对你不起作用,那么一定是你的标记或css的其他方面导致了问题。因为你在技术上是正确的,而且你的答案是除我之外唯一的答案,所以我接受你的答案,尽管Jan Dvorak在评论中首先指出了
位置
问题,在这种情况下,答案是什么P