AJAX导致Jump to Top

时间:2015-07-18 12:41:40

标签: javascript jquery ruby-on-rails ajax post

我知道这是重复但我已尝试放置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是否从顶部偏移相同的数量,因此告诉我他们是否在同一行,因为我是浮动的他们都是。如果这是导致它,可能有更好的方法来实现这一目标吗?

2 个答案:

答案 0 :(得分:1)

在调用Post请求之前,您是否清除已显示的html中的数据? 因为清除数据会导致您的html页面高度低于浏览器高度,导致滚动到顶部。并且您的帖子请求再次填充html页面中的数据,这会让您觉得帖子请求导致页面滚动到顶部。

答案 1 :(得分:0)

$(".a-result").click(function(e) {
    <do whatever you want....>
    return false;
});