$(document).on('click', function(e) {
if (!$(e.target).closest(".filter").length) {
$('.filter-block').hide();
}
e.stopPropagation();
});
<div class="filter" data-id="1">
<div class="filter-block" data-target="1">
<div class="filter" data-id="2">
<div class="filter-block" data-target="2">
<div class="filter" data-id="3">
<div class="filter-block" data-target="3">
$(document).on('click', function(e) {
let $f = $(e.target).closest(".filter");
if ($f.length) {
let id = $f.data('id');
$('.filter-block:not([data-target="'+id+'"])').hide();
}
e.stopPropagation();
});
let items = document.querySelectorAll("[class^='filter-block']")
let items.forEeach(item => {
// ...
});
[class^='filter-block']
означает, что вы будете делать выборку по всем элементам, у которых значение указанного аттрибута (В нашем случае, мы указали аттрибут class
) будет начинаться (Это делается при помощи такой конструкции как ^=
) с указанного значения (Мы указали filter-block
), после которого могут следовать другие символы (Т.е. filter-block2
, filter-block-filter-block-filter-block
, filter-block-123
, filter-blockkkkkkkkkkkkkkkkk
и так далее, это всё будет проходить через выборку, т.к. имеет общее начало filter-block
) $(document).on('click', function(e) {
if (!$(e.target).closest(".filter").length) {
let filterNum = $(e.target).data('num');
$('.filter-block' + filterNum).hide();
}
e.stopPropagation();
});