变量不适用于 .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_topconsole.log 的值

以上是关于变量不适用于 .animate() 中的 scrollTop 值的主要内容,如果未能解决你的问题,请参考以下文章

Jquery animate() 函数不适用于 IE

为啥 animate() 不适用于 data()?

UIScrollView ScrollRectToVisible - 不适用于 animate = yes

如何使 animate.css 在 Rails 中工作?由于 animate-rails 不适用于 heroku

Jquery animate 不适用于变换属性

CreateJS:numChildren 不适用于 Animate 生成的代码