Я использую найденные функции here on Codrops.Несколько кнопок "закрыть" на модальном
У этих модалов есть одна кнопка закрытия (также закрывается, когда вы нажимаете вне модального), но я хочу добавить еще. JavaScript ниже:
var ModalEffects = (function() {
function init() {
var overlay = document.querySelector('.md-overlay');
[].slice.call(document.querySelectorAll('.md-trigger')).forEach(function(el, i) {
var modal = document.querySelector('#' + el.getAttribute('data-modal')),
close = modal.querySelector('.md-close');
function removeModal(hasPerspective) {
classie.remove(modal, 'md-show');
if(hasPerspective) {
classie.remove(document.documentElement, 'md-perspective');
}
}
function removeModalHandler() {
removeModal(classie.has(el, 'md-setperspective'));
}
el.addEventListener('click', function(ev) {
classie.add(modal, 'md-show');
overlay.removeEventListener('click', removeModalHandler);
overlay.addEventListener('click', removeModalHandler);
if(classie.has(el, 'md-setperspective')) {
setTimeout(function() {
classie.add(document.documentElement, 'md-perspective');
}, 25);
}
});
close.addEventListener('click', function(ev) {
ev.stopPropagation();
removeModalHandler();
});
});
}
init();
})();
Я думал, только просто замена:
close = modal.querySelector('.md-close');
С этим:
close = modal.querySelectorAll('.md-close');
будет делать трюк - и каждый элемент с MD- закрыть класс закроет модальный. Я был не прав (я новичок в JavaScript, если вы не могли сказать).
Заранее благодарим за помощь!
обновленный код:
var ModalEffects = (function() {
function init() {
var overlay = document.querySelector('.md-overlay');
[].slice.call(document.querySelectorAll('.md-trigger')).forEach(function(el, i) {
var modal = document.querySelector('#' + el.getAttribute('data-modal'));
function removeModal(hasPerspective) {
classie.remove(modal, 'md-show');
if(hasPerspective) {
classie.remove(document.documentElement, 'md-perspective');
}
}
function removeModalHandler() {
removeModal(classie.has(el, 'md-setperspective'));
}
el.addEventListener('click', function(ev) {
classie.add(modal, 'md-show');
overlay.removeEventListener('click', removeModalHandler);
overlay.addEventListener('click', removeModalHandler);
if(classie.has(el, 'md-setperspective')) {
setTimeout(function() {
classie.add(document.documentElement, 'md-perspective');
}, 25);
}
});
modal.addEventListener('click', function(ev) {
if (classie.has(ev.target, "md-close")) {
ev.stopPropagation();
removeModalHandler();
}
});
});
}
init();
})();
Эй, Брэд, большое спасибо за взломать это, но все равно не повезло (или, может быть, я добавил код неправильно). Вот что у меня есть ... Если вы видите что-то, что может заставить его не работать, просто дайте мне знать. Я у тебя в долгу! ** Обновленный код выше. ** – tory