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