【问题标题】:Infinite scroll jumps to top of page无限滚动跳转到页面顶部
【发布时间】:2014-04-02 06:21:21
【问题描述】:

我正在使用带有砖石的无限滚动,一切正常并正确排列。我有一个按钮,当我单击它时,它会使该 div 变大并显示额外的内容。该按钮在页面最初加载时工作并加载正常,但是当我向下滚动并无限加载新项目时,如果我单击按钮以显示更多内容,它会跳转到屏幕顶部。

我猜我必须做一些回调?我对此有点困惑。我应该如何处理它?

这是我正在使用的代码:

$(function(){

$(".fancybox").fancybox();
   var $container = $('.main_containera');
   $container.imagesLoaded(function(){
  $container.masonry({
    itemSelector: '.item1',
    columnWidth: 0
  });
});


var nextSelector = '.pagination-next a';
var origNextUrl = $(nextSelector).attr('href');
var offsetRegex = /(offset=)([0-9]+)/;
var offset = origNextUrl.match(offsetRegex)[2];


$container.infinitescroll({
  navSelector  : '.paginate',    // selector for the paged navigation 
  nextSelector : '.pagination-next a',  // selector for the NEXT link (to page 2)
  itemSelector : '.item1',     // selector for all items you'll retrieve
  loading: {
      finishedMsg: 'No more pages to load.',
      img: 'http://i.imgur.com/6RMhx.gif'
    }
  },
  // trigger Masonry as a callback
  function( newElements ) {
    // hide new items while they are loading
    var $newElems = $( newElements ).css({ opacity: 0 });
    // ensure that images load before adding to masonry layout
    $newElems.imagesLoaded(function(){
      // show elems now they're ready
      $newElems.animate({ opacity: 1 });
      $container.masonry( 'appended', $newElems, true );

    });
  }
);


$('.comment_tr').click(function (e) {
    $(this).toggleClass('disabled');
    $(this).parent().parent().parent().find('form').slideToggle(250, function () {
        $('.main_containera').masonry();
    });
    e.preventDefault();
}); 

  });

【问题讨论】:

    标签: javascript jquery jquery-masonry infinite-scroll


    【解决方案1】:

    尝试改变

    $('.comment_tr').click(function (e) {
        $(this).toggleClass('disabled');
        $(this).parent().parent().parent().find('form').slideToggle(250, function () {
            $('.main_containera').masonry();
        });
        e.preventDefault();
    });
    

    $('.comment_tr').click(function (e) {
        $(this).toggleClass('disabled');
        $(this).parent().parent().parent().find('form').slideToggle(250, function () {
            $('.main_containera').masonry();
        });
        e.preventDefault();
        e.stopPropagation( );
    });
    

    点击事件可能会传播到另一个链接元素,该元素有一个空的href,或者将用户返回到通常只是将您带回顶部的同一页面。或者,您可以将e.preventDefault();e.stopPropagation(); 替换为return false;

    虽然没有看到 HTML,但很难确定这是问题所在。

    如果更改不起作用,您能发布 HTML 吗?

    【讨论】:

    • 没用。可能是因为调整了 div 的大小,然后触发砌体进行调整并将我射到页面顶部?
    • 尝试注释掉该部分,看看它是否会阻止不需要的行为。
    • 好的,如果我在 $container.masonry( 'appended', $newElems, true ) 下添加所有评论点击代码;然后我点击我的评论按钮,它扩展了 div,砌体调整正确,但随后 div 缩回,砌体重新校正....所以它不再跳到顶部,但现在正确的 div 只是扩展和缩回大声笑
    • 发现它使用了 .unbind('click');
    猜你喜欢
    • 1970-01-01
    • 2022-12-09
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多