2014-10-06 75 views
0

使用div的onclick =函数。 然后执行一个确认框。 如果用户按下确定。它使用以下命令重定向:window.location.hash并自动滚动到div ID。 自动滚动工作正常。但是动画滚动在此处中断。不使用标准时动画滚动<a href>链接

使用传统的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的函数的链接时,动画滚动会中断。

感谢您提前提供任何帮助!

+0

你点击功能所指向的“一”的标签。如果您希望能够点击div,请更改$('a')。click(function(){});到$('div')。click(function(){});虽然,你应该缩小你点击的div的类名或ID,否则当点击任何一个点击时你的事件都会触发。 – 2014-10-06 20:59:24

+0

谢谢。我将点击功能改为div。但它还没有工作。 – user3077601 2014-10-06 21:04:24

回答

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); 
} 
+0

谢谢!这工作很好!我一直试图用谷歌解决这个问题3天,并试用各种脚本。我是一个复制粘贴开发者。由于我没有钱为我的网站开发付钱,我没有时间真正学习真正的编码。我知道那些皱眉,这就是为什么我很少发布论坛。但是你帮了我很大的时间。感谢分配! – user3077601 2014-10-06 21:17:18