Запретить многократное добавление элементов при повторных кликах
Всем доброго дня. Есть пара вопросов, подскажите, пожалуйста:
Как при повторных кликах на элемент a.knopka запретить многократное добавление <div class="block_ul"><ul><li></li></ul></div>?
Как при клике на элемент .close удалить кроме класса knopka_active также и <div class="block_ul"><ul><li></li></ul></div> у всех элементов a.knopka, где это было добавлено?
Благодарю!
$("a.knopka").on("click", function() {
$(this).addClass('knopka_active').append('<div class="block_ul"><ul><li></li></ul></div>');
});
$(".close").on("click", function() {
$("a.knopka").removeClass('knopka_active');
});
.knopka {
display: inline-block;
width: 100px;
height: 100px;
border: 1px solid black;
}
.knopka_active {
border: 2px solid red;
}
.block_ul ul {
list-style: none; margin: 0; padding: 0;
}
.block_ul li {
display: inline-block;
margin: 0; padding: 0;
width: 10px;
height: 10px;
border: 1px solid green;
}
.close {
position: absolute;
top: 0;
right: 0;
border: 1px solid chocolate;
padding: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#" class="knopka"></a>
<a href="#" class="knopka"></a>
<a href="#" class="knopka"></a>
<div class="close">Отмена</div>
Ответы (1 шт):
Автор решения: Gonzo
→ Ссылка
Можно вот так:
$("a.knopka").on("click", function() {
if(!$(this).hasClass('knopka_active')) { // Проверяем отсутствие класса
$(this).addClass('knopka_active').append('<div class="block_ul"><ul><li></li></ul></div>');
}
});
$(".close").on("click", function() {
$("a.knopka").removeClass('knopka_active');
$("a.knopka").find('.block_ul').remove(); // удаляем вложенные элементы .block_ul
});