【问题标题】:stop scrolling to top after AJAX request [duplicate]AJAX请求后停止滚动到顶部[重复]
【发布时间】:2011-03-27 14:26:21
【问题描述】:

可能重复:
How do I stop a web page from scrolling to the top when a link is clicked that triggers javascript?

我的浏览器在 ajax 请求后滚动到顶部然后我使用

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

滚动回我的 div。 有没有办法阻止它从头滚动到顶部

【问题讨论】:

  • 你的意思是你希望它只在第一个 Ajax 请求时滚动到顶部,而不是在后续请求时滚动到顶部?
  • 你能显示触发ajax调用的代码吗?
  • 我不希望它滚动到顶部,
  • 我正在通过 JSON 调用网络方法

标签: javascript jquery ajax scroll


【解决方案1】:

您应该将return false 添加到您的ajax 调用函数的末尾。或者到您的内联调用结束:

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

【讨论】:

  • 请求将 # 添加到我的 URL,为什么?!!
  • 您将其设置为链接的href 属性,或者它是默认行为。显示您的代码以了解发生了什么。
  • 如果你把它放在正确的地方,它就会起作用。但是没有人看到你的代码,也没有人能说你把return false
  • 如果您不希望附加 #,您可以使用 span 而不是 href 并将 onclick 附加到 span。这就是我们在受到 url 中 # 负面影响的应用程序中的做法。
  • 将 'a' 更改为 'span' 有效。谢谢@AmyAnuszewski
【解决方案2】:

如果您通过锚点单击调用 ajax,请尝试以下操作:

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

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

【讨论】:

    【解决方案3】:

    使用 jQuery 附加事件处理程序(而不是使用 onclick 属性)并完全删除 href 属性。问题是单击链接时浏览器正在导航。我看到这种情况在使用 onclick 时经常发生,并且在阻止默认设置之前您的事件处理程序中存在错误。

    另一种确定的解决方法是不使用 而是使用 。

    【讨论】:

      【解决方案4】:
      /* AJAX stuff here */
      $('html, body').stop();
      

      【讨论】:

      • 请求将 # 添加到 URL,导致滚动到顶部
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 2020-06-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多