Вам нужно использовать this
для ссылки на элемент, который повторяется в каждом вашем вызове. Так что измените:
$('.speaker-badge').text('Committee Badge')
на
$(this).closest('.speaker-role').prev('.speaker-badge').text('Committee Badge')
Это будет проходить через DOM относительно ваших элементов списка, поднимаясь вверх через .closest()
, затем к предыдущему брату через .prev()
Кроме того, вам нужно изменить if
на if (speakerRole.indexOf('Committee Member')>-1)
>, когда он найдет совпадение, он будет равен 0
, что означает, что он нашел совпадение, но оценивается как ложное.
$('.slider-carousel li').each(function() {
$('.speaker-role .role li').each(function() {
var speakerRole = $(this).text();
if (speakerRole.indexOf('Committee Member') > -1) {
$(this).closest('.speaker-role').prev('.speaker-badge').text('Committee Badge')
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="slider-carousel">
<li class="speaker-item">
<h3>Speaker name</h3>
<div class="speaker-badge"></div>
<div class="speaker-role">
<ul class="role">
<li>Panelist</li>
<li>Committee Member</li>
</ul>
</div>
</li>
<li class="speaker-item">
<h3>Speaker name</h3>
<div class="speaker-badge"></div>
<div class="speaker-role">
<ul class="role">
<li>Co-Chair</li>
<li>Committee Member</li>
</ul>
</div>
</li>
<li class="speaker-item">
<h3>Speaker name</h3>
<div class="speaker-badge"></div>
<div class="speaker-role">
<ul class="role">
<li>Committee Member</li>
</ul>
</div>
</li>
<li class="speaker-item">
<h3>Speaker name</h3>
<div class="speaker-badge"></div>
<div class="speaker-role">
<ul class="role">
<li>Speaker</li>
</ul>
</div>
</li>
</ul>