我知道这是重复但我已尝试放置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是否从顶部偏移相同的数量,因此告诉我他们是否在同一行,因为我是浮动的他们都是。如果这是导致它,可能有更好的方法来实现这一目标吗?
答案 0 :(得分:1)
在调用Post请求之前,您是否清除已显示的html中的数据? 因为清除数据会导致您的html页面高度低于浏览器高度,导致滚动到顶部。并且您的帖子请求再次填充html页面中的数据,这会让您觉得帖子请求导致页面滚动到顶部。
答案 1 :(得分:0)
$(".a-result").click(function(e) {
<do whatever you want....>
return false;
});