I have:
<div class="main"> <a class="blah">blah1</a> </div> <div class="main"> <a class="blah">blah2</a> </div> <div class="main reply"> <a class="blah">blah3</a> </div> <div class="main reply"> <a class="blah">blah4</a> </div> <div class="main reply"> <a class="blah">blah5</a> </div> <div class="main"> <a class="blah">blah6</a> </div> <div class="main reply"> <a class="blah">blah7</a> </div>
when clicking a.blah
I need to add something like <div class="new">xxx</div>
to the last .reply
after the parent .main
, this means that it should find the last .reply
agter parent element of a.blah
, and it should not cross another .main
, this is what I encoded (but didn't work):
$('.blah').on('click', function(){ var new_add = '<div class="new">xxx</div>'; $(this).parents('div.main').next('.main:last').append(new_add); });
How can I fix this? Thanks
Based on comments
$('.blah').on('click', function(){ var new_add = '<div class="new">xxx</div>'; $(this).closest('.main').nextUntil('.main:not(.reply)').addBack().last().after(new_add); });
Demo: Fiddle
.reply
elements that go after the current .main
without crossing through .main
without .reply
.main
not .reply