javascript - 多个div addClass和增量后缀

标签 javascript jquery html css loops

我在这里进行砌体工作 我正在向 .gallery-items 动态添加类 我附加类 .column1, .column1 .mansory-item 附加 .image-holder 后缀增量。 主要父 div 是 .masonry-grid 所以我有多个 .masonry-grid div。

因此,第一个父 div 附加 .image-holder 后缀,增量工作正常。

但是对于从 6,7,8 n 开始的第二个父增量。我想从 1,2,3 和 4,5 开始,就像所有父 div 的第一个 div 一样。

我曾尝试使用 $(this) 但无法实现 谁能建议我如何实现所需的输出?

$(document).ready(function() {
  $('.gallery-items:nth-of-type(odd)').addClass('column1');
  $('.gallery-items:nth-of-type(even)').addClass('column2');

  $('.masonry-grid').each(function() {
    $(".column1").children('.mansory-item').each(function(i) {
      $(this).addClass("image-holder" + (i + 1));
    });
    $(".column2").children('.mansory-item').each(function(i) {
      $(this).addClass("image-holder" + (i + 4));
    });
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div class="masonry-grid">
  <div class="gallery-items">
    <div class="mansory-item">
    </div>
    <div class="mansory-item">
    </div>
    <div class="mansory-item">
    </div>
  </div>
  <div class="gallery-items">
    <div class="mansory-item">
    </div>
    <div class="mansory-item">
    </div>
  </div>
</div>

<div class="masonry-grid">
  <div class="gallery-items">
    <div class="mansory-item">
    </div>
    <div class="mansory-item">
    </div>
    <div class="mansory-item">
    </div>
  </div>
  <div class="gallery-items">
    <div class="mansory-item">
    </div>
    <div class="mansory-item">
    </div>
  </div>
</div>

最佳答案

您可以使用 $(this).find 而不是 $(".column1").children 因为前者会给您选择该特定元素的 child 选择器的选择器,而后者为您提供所有 .column1 元素:

$(document).ready(function() {
  $('.gallery-items:nth-of-type(odd)').addClass('column1');
  $('.gallery-items:nth-of-type(even)').addClass('column2');

  $('.masonry-grid').each(function() {
    $(this).find('.column1 .mansory-item').each(function(i) {
      $(this).addClass("image-holder" + (i + 1));
    });
    $(this).find('.column2 .mansory-item').each(function(i) {
      $(this).addClass("image-holder" + (i + 4));
    });
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="masonry-grid">
  <div class="gallery-items">
    <div class="mansory-item">1
    </div>
    <div class="mansory-item">2
    </div>
    <div class="mansory-item">3
    </div>
  </div>
  <div class="gallery-items">
    <div class="mansory-item">4
    </div>
    <div class="mansory-item">5
    </div>
  </div>
</div>

<div class="masonry-grid">
  <div class="gallery-items">
    <div class="mansory-item">6
    </div>
    <div class="mansory-item">7
    </div>
    <div class="mansory-item">8
    </div>
  </div>
  <div class="gallery-items">
    <div class="mansory-item">9
    </div>
    <div class="mansory-item">10
    </div>
  </div>
</div>

关于javascript - 多个div addClass和增量后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57766888/

相关文章:

javascript - 按 T​​ab 键不会重定向到正确的文本框

javascript - redux thunk 中的 debounce 方法

javascript - 找不到模块 : Error: Can't resolve './templates'

jquery - 我可以将 jQuery.ajax 与 Angular JS Promise api 一起使用吗?

html - CSS Sprite 图像背景问题

html - JS插入元素不影响布局的div类型元素

html - 光标悬停时如何阻止主菜单扩展

javascript - 返回 ajax.done 数据在 jquery 上给出错误

javascript - jQuery 对象包含什么?

jquery - 动态添加的行不删除