02.06.2022, 00:02
|
Новичок на форуме
|
|
Регистрация: 01.06.2022
Сообщений: 6
|
|
Два события (попап) на одном клике
Добрый вечер! Прошу помочь. Суть такая есть два модальных окна, и гифка.На гифку добавил два класса для вызова модалок, При нажатии на гифку 1 раз должно появляться первое модальное окно, при нажатии второй раз должно появляться только второе. Я новичек, вот попробовал что то накидать но получилось наполовину, при первом клике появляется окно 1, при втором клике появляется сразу 2 окна и первое и второе, а должно только второе..
let numOfClicks = 0;
const $elem = $(".gifka");
$elem.on('click', () => {
++numOfClicks;
if(numOfClicks % 2 !== 0 ) fadeIn('$.modal1');
else $('.modal2');
});
|
|
02.06.2022, 00:10
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
wainzor,
а если нажать в третий раз?
|
|
02.06.2022, 00:17
|
Новичок на форуме
|
|
Регистрация: 01.06.2022
Сообщений: 6
|
|
Сообщение от рони
|
wainzor,
а если нажать в третий раз?
|
в третий раз не нажмешь, суть такая что вторая модалка блокирует экран и дальше только переход по ссылке которая в модалке
|
|
02.06.2022, 00:25
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
wainzor,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.modal1,
.modal2 {
display: none;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(function() {
const $elem = $(".gifka"),
modal = $('.modal1, .modal2').toArray();
$elem.on('click', () => {
let [a, b] = modal;
$(a).fadeIn();
$(b).fadeOut();
modal.reverse()
});
});
</script>
</head>
<body>
<img src="https://javascript.ru/forum/images/smilies/smile.gif" alt="" class="gifka">
<div class="modal1">modal1</div>
<div class="modal2">modal2</div>
</body>
</html>
|
|
02.06.2022, 01:32
|
Новичок на форуме
|
|
Регистрация: 01.06.2022
Сообщений: 6
|
|
Спасибо!Теперь правда другая проблема, почему-то на первое модальное окно не закрывается по кнопке, хотя в ссылке хэш поставил.Вот сама модалка,может поскажете что это может быть?
<div class="modal">
<div class="modal__body">
<div class="modal__content">
<h2 class="modal__title">Title</h2>
<a class="modal__close" href="#">X</a>
</div>
</div>
</div>
|
|
02.06.2022, 08:00
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
wainzor,
сделайте макет
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
02.06.2022, 12:17
|
Новичок на форуме
|
|
Регистрация: 01.06.2022
Сообщений: 6
|
|
Вот, пожалуйста. Теперь при клике на гифку при первом открывается модал1 , при втором модал2.Но проблема в том что у меня модальный экран требует, чтобы пользователи закрывали окно, прежде чем они снова смогут использовать основную навигацию сайта, для того чтобы нажать на гиф второй раз и получается закрываться оно должно без обновления страницы, чтобы завершить цикл и нажать второй раз на гиф. А оно не закрывается
Поставить в href хэш или ? дает что страница просто перезагружается и цикл запускается по новой не доходя до второго клика.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
.modal1,
.modal2 {
display: none;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(function() {
const $elem = $(".gifka"),
modal = $('.modal1, .modal2').toArray();
$elem.on('click', () => {
let [a, b] = modal;
$(a).fadeIn();
$(b).fadeOut();
modal.reverse()
});
});
</script>
</head>
<body>
<img src="https://javascript.ru/forum/images/smilies/smile.gif" alt="" class="gifka">
<div class="modal1">
<div class="modal__body">
<div class="modal__content">
<h2 class="modal__title">Title</h2>
<a class="modal__close" href="">X</a>
</div>
</div>
</div>
<div class="modal2">
<div class="modal__body">
<div class="modal__content">
<h2 class="modal__title">Title2</h2>
<a class="modal__close" href="?">X</a>
</div>
</div>
</div>
</body>
</html>
|
|
02.06.2022, 14:06
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от wainzor
|
закрываться оно должно без обновления страницы,
|
добавлено
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
.modal1,
.modal2 {
display: none;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(function() {
const $elem = $('.gifka'),
modal = $('.modal1, .modal2').toArray();
$elem.on('click', () => {
let [a, b] = modal;
$(a).fadeIn();
$(b).fadeOut();
modal.reverse()
});
$('.modal__close').on('click', function(event) {
if (this.closest('.modal1')) {
event.preventDefault();
$('.modal1').fadeOut();
}
}
);
});
</script>
</head>
<body>
<img src="https://javascript.ru/forum/images/smilies/smile.gif" alt="" class="gifka">
<div class="modal1">
<div class="modal__body">
<div class="modal__content">
<h2 class="modal__title">Title</h2>
<a class="modal__close" href="">X</a>
</div>
</div>
</div>
<div class="modal2">
<div class="modal__body">
<div class="modal__content">
<h2 class="modal__title">Title2</h2>
<a class="modal__close" href="">X</a>
</div>
</div>
</div>
</body>
</html>
|
|
02.06.2022, 15:40
|
Новичок на форуме
|
|
Регистрация: 01.06.2022
Сообщений: 6
|
|
БОЛЬШОЕ ОГРОМНОЕ ВАМ СПАСИБО!
|
|
|
|