#jquery
Вопрос:
У меня есть div, который при нажатии покажет модальный, как только модальный будет виден, пользователь нажимает кнопку в модальном, и он закрывается.
Я хочу запретить пользователю снова нажимать на начальный div, они смогут щелкнуть его только в том случае, если они нажали другой другой div.
Вот мой код с наиболее «похожим»/псевдокодом того, чего я хочу достичь:
HTML
lt;divgt; lt;div class="container-what-we-offer"gt; lt;pgt;It's what we offerlt;/pgt; lt;/divgt; lt;div class="container-are-you-sure"gt; lt;pgt; Are you sure? lt;/pgt; lt;/divgt; lt;div class="modal"gt; lt;pgt; This is what we offer modal lt;/pgt; lt;buttongt;Happy with the offerlt;/buttongt; lt;/divgt; lt;/divgt;
Jquery
$(".container-are-you-sure").click(function(e) { showModal(); if(modal has been shown amp;amp; button happy with the offer has been clicked){ dontShowModalAgainUponClickingMe(); } else if (container-what-we-offer has been clicked){ showModal() } });
Спасибо
Комментарии:
1. Вы можете добавить глобальную переменную, чтобы проверить, был ли модальный режим уже открыт, и еще одну, если была нажата кнопка
2. спасибо @polypode, и как мне затем остановить функцию, если кнопка была нажата и модальный был открыт?
3. Вы можете либо добавить
if
инструкцию для проверки двух переменных, но ничего не делать. Или вы можете полностью удалить прослушиватель событий
Ответ №1:
Вы можете установить переменную и использовать ее для управления тем, была ли нажата кнопка и будет ли виден модал или нет.
var modalButtonClicked = false; $(".container-are-you-sure").click(function(e) { if (!modalButtonClicked) { showModal(); } }); function showModal() { $(".modal") .show(); } $(".modal button").click(function() { modalButtonClicked = true; $(".modal").hide(); });
ДЕМОНСТРАЦИЯ
var modalButtonClicked = false; $(".container-are-you-sure").click(function(e) { if (!modalButtonClicked) { showModal(); } }); function showModal() { $(".modal") .show(); } $(".modal button").click(function() { modalButtonClicked = true; $(".modal").hide(); });
.modal { display: none; }
lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"gt;lt;/scriptgt; lt;divgt; lt;div class="container-what-we-offer"gt; lt;pgt;It's what we offerlt;/pgt; lt;/divgt; lt;div class="container-are-you-sure"gt; lt;pgt; Are you sure? lt;/pgt; lt;/divgt; lt;div class="modal"gt; lt;pgt; This is what we offer modal lt;/pgt; lt;buttongt;Happy with the offerlt;/buttongt; lt;/divgt; lt;/divgt;