2011-03-27 61 views
15

可能重复:
How do I stop a web page from scrolling to the top when a link is clicked that triggers javascript?停止滚动到AJAX请求后顶部

我的浏览器滚动到Ajax请求后顶部,然后我用

$('html, body').animate({ scrollTop: $('#loadMore').offset().top }, 2000); 

到回滚动我的分区。 是我有办法阻止它从一开始滚动顶部

+0

你的意思是说你希望它只在第一个Ajax请求上滚动到顶部,而不是在随后的请求上滚动到顶部? – 2011-03-27 14:28:47

+2

你可以在触发ajax调用的地方显示代码吗? – 2011-03-27 14:28:56

+0

我不希望它滚动到顶部, – Miroo 2011-03-27 14:29:33

回答

29

你应该添加return false你的Ajax调用函数的末尾。或您的在线通话结束:

<a href="#" onclick="someAjaxCall(); return false">Link</a> 
+0

请求将#添加到我的URL,为什么? – Miroo 2011-03-27 14:35:05

+0

你将它设置为'href'属性给你的链接或者它是默认行为。显示您的代码以了解发生了什么。 – fl00r 2011-03-27 14:37:37

+0

你应该'返回false'来防止滚动。 – fl00r 2011-03-27 14:39:08

1
/* AJAX stuff here */ 
$('html, body').stop(); 
+1

请求将#添加到URL,导致滚动到顶部 – Miroo 2011-03-27 14:35:43

7

如果要调用通过锚点击阿贾克斯,试试这个:

<a id="clicker" href="#">Click here to do ajax</a> 

$('#clicker').click(function(e) { e.preventDefault(); $.get("/myurl/") }) 
3

连接使用jQuery(不与onclick属性)事件处理程序和完全删除href属性。问题在于浏览器在点击链接时正在导航。当使用onclick时,我发现这种情况很多,并且在阻止默认设置之前事件处理程序中存在错误。

解决这个问题的另一种方法是不使用< a>而是使用< span>。