ajax调用重置窗口滚动位置

时间:2012-10-02 17:24:13

标签: php javascript jquery ajax

我在网站上添加了一个简单的投票功能。出于某种原因,ajax调用将窗口滚动重置为页面顶部。这对用户来说显然非常烦人,因为他们每次在帖子上投票时都必须从顶部开始滚动。

我似乎无法理解为什么会这样。有什么建议吗?

function vote_up(post_id)
{
  //alert("Up: " + post_id);
  $.ajax({
  url: '<?php echo URL::base(); ?>voting_ajax.php?vote_up&post_id=' + post_id,
  dataType: 'json',
  success: function(data) {
      if(data.result == 1)
      {
        $('#up_count_'+post_id).html(data.vote_up);
        $('#down_count_'+post_id).html(data.vote_down);
      }
      if(data.msg != '')
      {
    $.msgbox(data.msg);
      }
    }
  });

}

2 个答案:

答案 0 :(得分:4)

您的标签中是否有空的'href'或井号,例如

<a href="#" onclick="action();">vote me up</a>

如果是这种情况,则哈希符号会向上滚动回到顶部。你应该使用

<a href="javascript:void(0);" onclick="action();">vote me up</a>

或者让事件处理程序返回false作为默认操作。

答案 1 :(得分:2)

您可以执行@lkrups所说的内容或添加event.preventDefault();,甚至在功能结束时添加return false;也应该有效。