【问题标题】:Animated scrolling when not using standard <a href> links不使用标准 <a href> 链接时的动画滚动
【发布时间】:2014-10-06 20:53:41
【问题描述】:

我正在使用带有 onclick= 功能的 div。 这又会执行一个确认框。 如果用户按确定。它使用重定向:window.location.hash 并自动滚动到 div id。 自动滚动工作正常。但动画滚动此时会中断。

使用传统的 a href 对动画滚动效果很好。

我是一个业余爱好者,我拼凑了来自不同来源的以下代码。我会发布代码,希望有人能给出答案。

代码:

function FrontAsNew() {

 if (confirm("No damage allowed") == true) { window.location.hash = "#side"; }
 else { window.location.hash = "#front"; } 

}

<div id="cosmetics_box" style="cursor:hand; cursor:pointer;" onclick="FrontAsNew()">As new</div>

Animated scroll script: 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" ></script>
<script>
$('div').click(function(){
$('html, body').animate({
    scrollTop: $( $(this).attr('href') ).offset().top
}, 2000);
return false;
});

简而言之:动画滚动适用于传统的 a href 链接。但是,当使用 div 作为链接来执行使用 location.hash 的函数时,动画滚动中断。

提前感谢您的帮助!

【问题讨论】:

  • 您的点击函数指向“a”标签。如果您希望能够单击一个 div,请更改 $('a').click(function (){});到 $('div').click(function (){});不过,您可能应该使用类名或 id 缩小您正在单击的 div,否则当单击任何偶数时,您的事件将触发。
  • 谢谢。我将点击功能更改为div。但它还没有工作。

标签: javascript jquery html css animation


【解决方案1】:

试试这样的:

function FrontAsNew() {

 if (confirm("No damage allowed") == true) { 
   scrollToTopById('side');
 }
 else { 
   scrollToTopById('front');
 } 

}

function scrollToTopById(id) {
   $('html, body').animate({scrollTop: $('#' + id).offset().top}, 2000);
}

【讨论】:

  • 谢谢!这很好用!我一直在尝试用谷歌解决这个问题 3 天,并尝试了各种脚本。我是一名复制粘贴开发人员。因为我没有钱为我的网络开发付钱,而且我没有时间真正学习真正的编码。我知道那是不受欢迎的,这就是为什么我很少在论坛上发帖。但你帮了我很大的忙。非常感谢!
猜你喜欢
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 2012-12-17
  • 2012-12-11
相关资源
最近更新 更多