我使用的模態爲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