为什么执行我的jQuery事件处理程序会导致页面滚动回到顶部?

时间:2009-12-28 21:44:51

标签: javascript jquery dom

我正在我的网页上运行一些JavaScript。每当它捕获附加到锚<a>元素并执行处理程序(我使用jQuery附加)的事件时,滚动位置将重置回页面顶部。有解决方案吗?

3 个答案:

答案 0 :(得分:6)

如果您将<a>属性保留为href,则处理#代码的点击时会出现您提及的滚动内容。这是因为浏览器在事件链的末尾执行默认操作(这是因为所谓的event bubbling

要解决此问题,您必须阻止浏览器对Click事件的默认处理,这可以通过不同的方式完成:

  • href='#'替换为href='javascript:void(0)'
  • 从您的事件处理函数返回false
  • 使用jQuery的preventDefault方法

答案 1 :(得分:5)

一个原因可能是您有指向“#”的链接,并且您有绑定到这些链接的事件。解决方案是在事件函数结束时执行return false;

<a href="#" id="foo">Test</a>

在jQuery中:

$('#foo').click(function() {
    /* do stuff */
    return false;
});

答案 2 :(得分:0)

我认为您的意思是每当您回发到服务器时,页面都会滚动到顶部 如果那不是你的意思,请澄清。

要解决此问题,您可以使用Javascript发送$(window).scrollTop()以及回发,然后编写发出更多Javascript的服务器端代码,以便在获得参数时向下滚动。

如果您需要更具体的解决方案,请提供更多详细信息。

相关问题