Add a class to a consistent serial div using jquery

I need addCassa coincidence div. I used jquery nextAll, but it also stands out even if the div didn't match. The last div with text "a"should not be part of nextAll

$('a').click(function(){
$(this).parent().nextAll('.abc').addClass('active')
})
.active{color:red}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<div class="abc">
    <a>click </a>
</div>

<div class="abc">
    abc
</div>
<div class="abc">
    abc
</div>

<div class="xyz">
    xyz
</div>

<div class="abc">
    a
</div>
Run codeHide result
+4
source share
2 answers

Use .nextUntil()and :not():

$('a').click(function() {
    $(this).parent().nextUntil(':not(.abc)').addClass('active')
})

Demo: http://jsfiddle.net/jLgxokbp/

+4
source

If you want to filter text, use contains. Your code selects everything with the abc class.

$('a').click(function(){
$(this).parent().nextAll(':contains("abc")').addClass('active')
})
.active{color:red}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<div class="abc">
    <a>click </a>
</div>

<div class="abc">
    abc
</div>
<div class="abc">
    abc
</div>

<div class="xyz">
    xyz
</div>

<div class="abc">
    a
</div>
Run codeHide result
+1
source

All Articles