#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть список элементов dom:
- Когда я нажимаю на элемент, он открывается и закрывается.
- Когда я нажимаю на дочерний элемент открытого, он не закрывает родительский элемент.
- Когда я нажимаю на другой, он откроет тот, на который нажат, и закроет остальные.
- Когда я щелкаю за пределами открытого элемента, он закрывается, а затем открывается.
-> Проблема в том, что я не могу заархивировать первый. Кто-нибудь знает, что я здесь делаю не так?
$(".front").click(function() {
$(".front").not(this).removeClass("active");
$(this).addClass("active");
});
$(document).mouseup(function(n) {
var t = [];
t.push($(".front"));
$.each(t, function(t, i) {
$(i).is(n.target) || $(i).has(n.target).length !== 0 || $(i).removeClass("active")
})
});
.front {
position: relative;
background-color: red;
width: 100px;
height: 100px;
margin: 20px;
}
.front .back {
position: absolute;
top: 50%;
left: 150px;
display: none;
background-color: green;
width: 50px;
height: 50px;
}
.front.active .back {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="front">
<div class="back"></div>
</div>
<div class="front">
<div class="back"></div>
</div>
<div class="front">
<div class="back"></div>
</div>
Ответ №1:
просто добавьте класс переключения после вашей первой строки:
$(".front").click(function() {
$(".front").not(this).removeClass("active");
$(this).toggleClass("active");
});
Комментарии:
1. если использовать toggleClass, дочерний элемент внутри тоже будет переключаться, я просто хочу, чтобы родительский был переключаемым
2. Затем добавьте .parent после (этого)
3. В моем случае это не работает, когда я нажимаю на дочерний элемент, он все равно переключается