Reputation: 1400
hi all so i have for example 4 sets of lists and want to set active class for the first of each section but at the moment on my JS of course just sets the first one and does not do the others, any ideas how i can sort so does first for each DL?
markup example:
<div class="faqs">
<dl>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
</dl>
</div>
<div class="faqs">
<dl>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
</dl>
</div>
<div class="faqs">
<dl>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
</dl>
</div>
<div class="faqs">
<dl>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
</dl>
</div>
JS
$(".faqs dl dd").first().addClass("active");
$(".faqs dl dd .content").first().addClass("active");
Upvotes: 0
Views: 35
Reputation: 388416
Try
$('.faqs').find('.content:first').text('found')
.faqs {
border: 1px solid red;
margin-bottom: 5px;
}
dd {
border: 1px solid green;
padding: 5px;
margin-bottom: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="faqs">
<dl>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
</dl>
</div>
<div class="faqs">
<dl>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
</dl>
</div>
<div class="faqs">
<dl>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
</dl>
</div>
<div class="faqs">
<dl>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
<dd><div class="content"></div></dd>
</dl>
</div>
Upvotes: 0
Reputation: 15387
You can use as below also:
$("div[class='faqs']>dl>dd:first-child").addClass("active");
Upvotes: 0
Reputation: 82241
Use first-child
selector instead of first
as:
first() - Reduce the set of matched elements to the first in the set.
and
:first-child - Selects all elements that are the first child of their parent.
$(".faqs dl dd:first-child,.faqs dl dd:first-child .content").addClass("active");
Upvotes: 1