我确实知道这是重复的,但我尝试放置e.preventDefault
,但它仍然会跳转。
$(".a-result").click(function(e) {
<some code....>
$.post(result + "/fineart/show", {id: $artwork_id})
.done(function(data){
$rowBeginner.before(data);
});
});
任何有关如何阻止 AJAX 导致跳转到顶部的帮助将不胜感激。
.a-result
顺便说一句,是 div 的集合。
编辑
<div id="results-panel">
<% @artwork_q.each.with_index do |art, index| %>
<div class="a-result" id="<%= index %>">
<div class="a-result-photo">
<%= image_tag art.photo.url(:small) %>
</div>
<div class="a-result-info">
<%= art.artist.last_first if art.artist.present? %><br>
<strong><%= art.title %></strong><span class="hidden_id"><%= art.id %></span><br>
</div>
</div>
<% end %>
</div>
在 #results-panel
中,我循环浏览结果的 Rails 集合,然后在其中一个结果之间放置一个 AJAX div。
另外,我正在使用 jquery 的 offset()
和 offset().top
函数,如果这与它有任何关系的话。我使用 offset()
函数来测试每个连续的 div 是否从顶部偏移相同的量,因此告诉我它们是否在同一行,因为我 float 了所有其中。如果这是造成的,是否有更好的方法来实现这一目标?
最佳答案
在调用Post请求之前,是否清除了html中已经显示的数据? 因为清除数据会导致 html 页面高度小于浏览器高度,从而导致滚动到顶部。并且您的 post 请求再次在 html 页面中填充数据,这让您感觉 post 请求导致页面滚动到顶部。
关于javascript - AJAX 导致跳转到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31491274/