1
我正在尝试使用jQuery在我的应用中动画页面转换。每当我$.get()
一个新的部分(从HTML文件)到我的网页,我试图动画它滚动到位。这是我的脚本到目前为止:获取完成后jQuery运行函数
function loadMain(){
$("#homeSection").remove();
$("#blogSection").remove();
$.get('main.html', function(data){
$('#navbar').after(data);
});
$('html, body').animate({
scrollTop: $("#homeSection").offset().top
}, 1000);
}
我的问题是,动画未加载。请注意,$.get()
请求应重新插入#homeSection
,并最终显示在DOM中。此外,我在FF的控制台中看到这一点:
TypeError: $(...).offset(...) is undefined
而且它指向我的脚本scrollTop:
线。
我敢肯定,这涉及到的事实,我想滚动的东西,是不是有尚未,但我不知道如何才能阻止$.get()
的异步调用只有当它存在时才有动画。我一直在阅读[deferred][1]
和[promise][2]
,但概念正在逃避我。任何人都可以指出我的错误和帮助吗?
你确实认识到'$('#navbar')。after(data);'当get完成时运行,对吗?为什么你没有把剩下的东西放在那里呢? *“我不知道如何阻止$ .get()的异步调用”*你不需要/不想这样做。 –
是在dom加载完成后执行的上述脚本? – Lal
@Lal yes:'$()。ready(function(){loadMain();});' – Joum