jQuery—应用于所有特定 class 中的第一个 div

jQuery—apply to first div of all of a particular class

我有几个元素 class “.MonthAccordion”。我想将某些内容应用到每个 .MonthAccordion 的第一个 child div,但我所拥有的似乎只应用到第一个 MonthAccordion 的 child。随后的 MonthAccordions' children 不受影响。我要去哪里?

$(".MonthAccordion").children("div:first").show();

使用 .each() 方法迭代所有具有 'MonthAccordion' class 的元素。

   $('.MonthAccordion').each(function( index ) {
      $(this).children("div:first").show();
    });

仅 select 所有直系后代,并按 first-child

过滤

$(".MonthAccordion > div:first-of-type").show();
.MonthAccordion > * {display:none}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="MonthAccordion">
  <h4>Something else</h4>
  <div>This one</div>
  <div>Not this one</div>
</div>

<div class="MonthAccordion">
  <div>This one</div>
  <div>Not this one</div>
</div>

你的问题是 jQuery first selects 只有 中的 first 元素整个集合,而 first-child select 是每个 parent 元素中的第一个元素等

另一种使用 find() 方法实现的方法,它沿着 DOM 元素的后代向下遍历,一直向下遍历到最后一个后代:

$(".MonthAccordion").find("div:first").show();
.MonthAccordion > * {display:none}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="MonthAccordion">
  <div>This one</div>
  <div>Not this one</div>
</div>

<div class="MonthAccordion">
  <div>This one</div>
  <div>Not this one</div>
</div>