Вы можете сделать это даже без классов или идентификаторов, используя nextUntil()
и filter()
:
$(function(){
$("a[id*=checkboxAll]").click(function(){
$(this).nextUntil('h3').filter("input:checkbox").prop('checked', 'checked');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h3>Favorite Countries</h3>
<a id="fav_countries_checkboxAll_option" href="javascript:void(0);">Select all</a> <input type="checkbox" class="fav-color" name="country1" value="India">India<br/> <input type="checkbox" class="fav-color" name="country2" value="Singapore">Singapore<br/> <input type="checkbox" class="fav-color" name="country3" value="Australia">Australia<br/> <input type="checkbox" class="fav-color" name="country4" value="Ameria">Ameria<br/> <br/>
<h3>Favorite Sports</h3>
<a id="fav_sports_checkboxAll_option" href="javascript:void(0);">Select all</a> <input type="checkbox" class="fav-sport" name="sport1" value="Cricket">Cricket<br/> <input type="checkbox" class="fav-sport" name="sport2" value="Tennis">Tennis<br/> <input type="checkbox" class="fav-sport" name="sport3" value="VolleyBall">VolleyBall
Редактировать: теперь я сделал селектор $("a")
более конкретным, чтобы соответствовать реальной ситуации приложения.
Я выбрал "h3"
быть ограничивающим элементом для селектора nextUntil()
. Вы должны выбрать селектор, который надежно соответствует структуре вашей страницы. Этот селектор или конец страницы должен появляться после каждого флажка каждой группы.