变量不适用于 .animate() 中的 scrollTop 值
Posted
技术标签:
【中文标题】变量不适用于 .animate() 中的 scrollTop 值【英文标题】:Variable not working on scrollTop value inside .animate() 【发布时间】:2012-08-31 03:55:20 【问题描述】:您好,想知道是否有人可以通过单击功能帮助我,应该为目标锚点设置动画,当使用整数作为 scrollTop 值时它可以正常工作,但是当我传递一个它不喜欢的变量时。有什么想法吗?
$(".project a").click(function(event)
event.preventDefault();
var full_url = this.href;
var parts = full_url.split("#");
var trgt = parts[1];
var target_offset = $("#"+trgt).offset();
var target_top = target_offset.top; //- 90;
$('html, body').animate(scrollTop:target_top, 1000, function()
);
);
已修复: 抱歉,该功能从一开始就运行良好,但是一位同事指出 var trgt 包含一个元素,该元素在 css 中设置为 display:none,其初衷是在回调上使用 slideToggle ......巨大的叹息。为你的回应干杯!
【问题讨论】:
没有错误,因为它会阻止您在“1000”持续时间内滚动,就好像它实际上正在工作一样......真的很难过:S 意味着它根本不开始滚动? 它根本不滚动。但是,如果我将scrollTop:target_top
替换为 scrollTop:500
它就可以了。
【参考方案1】:
尝试将变量解析为整数
parseInt(target_top)
然后再试一次。如果我的建议不起作用,请告诉我。
或阅读:Using a variable for a key in a javascript object literal。看Andy E
的回答。
【讨论】:
typeof 在 target_top 上返回数字,我还是尝试了 parseInt,但没有运气。还尝试了 Andy 将变量分配为对象字面量的方法,但还是没有用。 @SamuelDavidHardy:在 Chrome 中查看target_top
和 console.log
的值以上是关于变量不适用于 .animate() 中的 scrollTop 值的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView ScrollRectToVisible - 不适用于 animate = yes