【发布时间】:2013-09-24 03:44:03
【问题描述】:
基于this tutorial(这里是直播demo)
尝试在我的项目中实现此功能。如你所见
<button class="md-trigger" data-modal="modal-16">Blur</button>
触发模态。问题是,在我的项目中,这个按钮是 ajax 结果并且不会触发模式。
因此需要对modalEffects.js 进行一些更改(代码如下)。
但不知道必须改变什么?
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();
})();
【问题讨论】:
-
querySelectorAll没有现成的选择,就像任何其他获取 DOM 元素的方法一样,它获取那里的任何东西,而不是将来可能存在的东西?事件委托是另一回事! -
@adeneo 你有什么建议?
-
取决于你真正想要做什么?
-
@adeneo:如果稍后再次检查集合,其他获取 DOM 元素的方法,如 getElementsByTagName() 将包含调用后添加的元素。但是,将任何集合转换为数组都会在数组转换时冻结它。
-
@adeneo 你读过我的问题了吗?
标签: javascript jquery ajax modal-dialog live