jQuery调用函数
我的模态窗口结构有问题。我有一个div,它在单击某个函数以显示模式窗口时调用该函数。在showmodel()函数内部,我调用另一个函数,如果用户单击ESC键或从文档中的任何模式窗口中单击,该函数将充当关闭函数 代码如下:jQuery调用函数,jquery,ajax,function,modal-dialog,Jquery,Ajax,Function,Modal Dialog,我的模态窗口结构有问题。我有一个div,它在单击某个函数以显示模式窗口时调用该函数。在showmodel()函数内部,我调用另一个函数,如果用户单击ESC键或从文档中的任何模式窗口中单击,该函数将充当关闭函数 代码如下: $('body').on('click', '.container', function(){ showModal(); }); 单击后,将打开showModal function showModal(_this) { $('body').addClass('vi
$('body').on('click', '.container', function(){
showModal();
});
单击后,将打开showModal
function showModal(_this) {
$('body').addClass('video-open');
$('.popup').load(templateDir + '/views/video.html', function() {
$(this).show();
$('.cloaked').show();
});
closeModal('.modal-window');
}
在showModal中立即调用closeModal。出于某种原因,当我的意图是仅在用户单击ESC或退出模式时才触发emptyModal时,emptyModal也会立即被触发
function closeModal(selector) {
$(document).keyup(function(e){
if (e.keyCode == 27) {
emptyModal(selector);
}
});
$(document).click(function(e) {
if (!$(e.target).closest(selector).length) {
emptyModal(selector);
}
});
}
使用console.log,我可以看到“windowclosed”,并确认在closeModal被调用时会立即调用emptyModal,即使它被包装在条件语句中
function emptyModal(selector) {
console.log('window closed')
$(selector).empty().hide();
$('.cloaked').hide();
}
我认为总的来说,我对如何做我需要的事情有一个误解,而且我可能在实施过程中出错了。只是一个旁注,我将closeModal和emptyModal作为单独的函数,因为我在不同的模态视图函数中使用它们,而不是showModal函数 在closeModal函数中,不要在整个文档上放置单击事件,而是尝试将其置于.closed
$('.cloaked').click(function(e) {
if (!$(e.target).closest(selector).length) {
emptyModal(selector);
}
});
如果我理解正确的话,当模态对话框打开时,具有.dopped类的元素应该在背景中显示黑色斗篷,因此单击模态对话框以外的任何位置都意味着用户正在单击具有.dopped类的元素。Wow。这很有道理。我并没有把它归结为文档。单击功能与文档。键控功能。这确实是一个文档。单击一个,这就完美了。天才。