javascript - 为什么无限滚动中的 wrapAll 有很多 div?

标签 javascript jquery html css

最后一个问题在这里: Wrap some divs with Two different columns

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://unpkg.com/infinite-scroll@3/dist/infinite-scroll.pkgd.min.js"></script>

    <script type="text/javascript">
    $('.wrapper').each(function() {
      $(this).find(".lpost").wrapAll('<div class="left_columns"></div>')
      $(this).find(".rpost").wrapAll('<div class="right_columns"></div>')
    })
    </script>

    <div class="wrapper">
      <div class="rpost">-115</div>
      <div class="lpost">-91</div>
      <div class="lpost">-99</div>
      <div class="rpost">-181</div>
      <div class="lpost">-19</div>
      <div class="rpost">-135</div>
      <div class="rpost">-85</div>
      <div class="lpost">-39</div>
    </div>

        <script type="text/javascript">
        var $container = $('.wrapper').infiniteScroll({
            path: '.next-post',
            append: '.post',
            hideNav: '.pagination',
            status: '.page-load-status',
        });
        $container.on('append.infiniteScroll',
        function(event, response, path, items) {
            $(function() {
                $('.wrapper').each(function() {
                  $(this).find(".lpost").wrapAll('<div class="left_columns"></div>')
                  $(this).find(".rpost").wrapAll('<div class="right_columns"></div>')
                })
            });
        });
        </script>

如果向下滚动三页结果:

<div class="wrapper">
  <div class="left_columns">
    <div class="left_columns">
      <div class="left_columns">
          <div class="lpost">-91</div>
          <div class="lpost">-99</div>
          <div class="lpost">-19</div>
          <div class="lpost">-39</div>
      </div>
    </div>
  </div>
</div>

有太多的 left_columns 和 right_columns div 如何解决这个问题?

最佳答案

您应该检查 .right_columns.left_columns 是否存在:

$('.wrapper').each(function() {
    var lpost = $(this).find(".lpost"),
        rpost = $(this).find(".rpost"),
        lcol  = $(this).find('.left_columns');

    if(lcol.length){ 
        var rcol = $(this).find('.right_columns');
        lpost.appendTo(lcol);
        rpost.appendTo(rcol);
    }else{
        lpost.wrapAll('<div class="left_columns"></div>');
        rpost.wrapAll('<div class="right_columns"></div>');
    }
})

关于javascript - 为什么无限滚动中的 wrapAll 有很多 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45687762/

相关文章:

javascript - 当文本框中的字符超过 3 个时,我需要添加边框

javascript - 使用 json (ajax) 将数据表对象放在新行中

Jquery:如何在按下回车键时触发点击事件

html - Chrome 认为有滚动条并忽略 100% 宽度

javascript - 文件观察器 'Babel' 可用于此文件。说明 : 'Transpiles ECMAScript 6 code to ECMAScript 5'

javascript - 从地址字符串中提取邮政编码 - JavaScript - 英国

javascript - Bootstrap 多个下拉菜单更改相应的按钮文本

javascript - 动态生成的 html 元素停止工作

html - 如何将 figcaption 从图中垂直放置?

javascript - ASP.NET中 Crystal 报表的空白结果问题