用户单击读取更多链接后停止页面滚动到顶部

时间:2014-08-23 07:50:01

标签: javascript jquery html

在html页面上使用以下功能来显示/隐藏有关评论的更多详细信息。问题是,当点击阅读更多链接时,页面总是向上滚动到顶部,从而使用户远离他们试图查看的实际评论。

尝试在下面的代码块中使用return false;是否正确?如果是这样的话?

var collapseIt = function(){

     var collapsedSize = '25px';
   $('.item').each(function() {

    var h = this.scrollHeight;

    console.log(h);
    var div = $(this);

    if (h > 40) {
      div.css('height', collapsedSize);
      div.after('<a id="more" class="item" href="#">Read more</a><br/>');
      var link = div.next();
      link.click(function(e) {
        e.stopPropagation();

        if (link.text() != 'Collapse') {
          link.text('Collapse');
          div.animate({
            'height': h
          });

        } else {
          div.animate({
            'height': collapsedSize
          });
          link.text('Read more');
        }

      });
    }

  });   
};

3 个答案:

答案 0 :(得分:1)

最简单的方法是阻止默认操作:

link.click(function(e) {
  e.preventDefault();
});

另一种方法是返回滚动位置:

var scrollTop = document.body.scrollTop;

link.click(function(e) {
  document.body.scrollTop = scrollTop;
});

答案 1 :(得分:1)

替换您的代码以添加“阅读更多”&#39;链接以下行:

div.after('<a id="more" class="item" href="#!">Read more</a><br/>');

这个答案在这里得到了很好的解释:

https://stackoverflow.com/a/11246131/802651

答案 2 :(得分:0)

e.preventDefault()

在点击处理程序的开头。