Два события (попап) на одном клике
Добрый вечер! Прошу помочь. Суть такая есть два модальных окна, и гифка.На гифку добавил два класса для вызова модалок, При нажатии на гифку 1 раз должно появляться первое модальное окно, при нажатии второй раз должно появляться только второе. Я новичек, вот попробовал что то накидать но получилось наполовину, при первом клике появляется окно 1, при втором клике появляется сразу 2 окна и первое и второе, а должно только второе..
let numOfClicks = 0; const $elem = $(".gifka"); $elem.on('click', () => { ++numOfClicks; if(numOfClicks % 2 !== 0 ) fadeIn('$.modal1'); else $('.modal2'); }); |
wainzor,
а если нажать в третий раз? |
Цитата:
|
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> |
Спасибо!Теперь правда другая проблема, почему-то на первое модальное окно не закрывается по кнопке, хотя в ссылке хэш поставил.Вот сама модалка,может поскажете что это может быть?
<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> |
wainzor,
сделайте макет Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Вот, пожалуйста. Теперь при клике на гифку при первом открывается модал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> |
Цитата:
<!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> |
БОЛЬШОЕ ОГРОМНОЕ ВАМ СПАСИБО!:)
|
Часовой пояс GMT +3, время: 12:40. |