Как сделать, чтобы класс взаимодействовал только с определенными блоками?
Как сделать так, чтобы каждый class ".filter{0-9]" взаимодействовал с ".filter-block{0-9]", а с другими блоками нет?
Код:
$(document).on('click', function(e) {
if (!$(e.target).closest(".filter").length) {
$('.filter-block').hide();
}
e.stopPropagation();
});
$(document).on('click', function(e) {
if (!$(e.target).closest(".filter2").length) {
$('.filter-block2').hide();
}
e.stopPropagation();
});
$(document).on('click', function(e) {
if (!$(e.target).closest(".filter3").length) {
$('.filter-block3').hide();
}
e.stopPropagation();
});
$(document).on('click', function(e) {
if (!$(e.target).closest(".filter4").length) {
$('.filter-block4').hide();
}
e.stopPropagation();
});
$(document).on('click', function(e) {
if (!$(e.target).closest(".filter5").length) {
$('.filter-block5').hide();
}
e.stopPropagation();
});
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Классика
$(document).on('click', '.filter', function() {
$('.filter').not(this).find('.filter-block').hide();
$(this).find('.filter-block').show();
});
$(document).on('click', function(e) {
e.stopPropagation();
if (!$(e.target).closest('div').hasClass('filter'))
$('.filter .filter-block').hide();
});
.filter {
border: 1px solid black;
margin: 5px;
padding: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<div>
<div class="filter">
<a class="filter-link-top" href="#" onclick="$('.filter-block-sort').toggle();return false;"> Сортировать</a>
<ul class="filter-block filter-block-sort" aria-labelledby="filter-block"><li>1.1</li><li>1.2</li><li>1.3</li></ul>
</div>
<div class="filter">
<a class="filter-link-top" href="#" onclick="$('.filter-block-sort').toggle();return false;"> Сортировать</a>
<ul class="filter-block filter-block-sort" aria-labelledby="filter-block"><li>2.1</li><li>2.2</li><li>2.3</li></ul>
</div>
<div class="filter">
<a class="filter-link-top" href="#" onclick="$('.filter-block-sort').toggle();return false;"> Сортировать</a>
<ul class="filter-block filter-block-sort" aria-labelledby="filter-block"><li>3.1</li><li>3.2</li><li>3.3</li></ul>
</div>
<div class="filter">
<a class="filter-link-top" href="#" onclick="$('.filter-block-sort').toggle();return false;"> Сортировать</a>
<ul class="filter-block filter-block-sort" aria-labelledby="filter-block"><li>4.1</li><li>4.2</li><li>4.3</li></ul>
</div>
</div>