我是超级新手,需要快速建议。我已经在我的wordpress网站上安装了一个基于javascript的弹出插件,当有人访问该网站时会自动打开。要关闭弹出窗口,用户必须单击弹出窗口一角的十字X.
我需要编辑插件,以便用户可以单击ANYWHERE,插件将关闭。
这是我找到的javascript代码。关于这个的任何提示?
function open_lightbox(){
//var closebut = (typeof(ujiPopups) !== 'undefined' && ujiPopups != null && ujiPopups.showclose && ujiPopups.showclose == "true") ? true : false;
jQuery("#popup").modal({
onOpen: function (dialog) {
dialog.overlay.fadeIn('fast');
dialog.data.hide();
dialog.container.show('fast', function () {
dialog.data.fadeIn('slow');
});
},
autoResize: false,
autoPosition: true,
escClose: false,
zIndex: 999999,
overlayClose: false
});
}
function popups_close(){
jQuery.modal.close();
jQuery("#popup").remove();
}
答案 0 :(得分:5)
这样的事情应该这样做:
$(document).click(function() {
if($('#popup').is(':visible')) {
popups_close();
}
});
如果您希望在与弹出窗口本身的交互中保持模态处于活动状态:
$(document).click(function(e) {
if (!$(e.target).is("#popup")) {
if ($('#popup').is(':visible')) {
popups_close();
}
}
});
这里有一个简单的例子:http://jsfiddle.net/wnT4G/
*通过@ComFreek
检查一些优雅修订的评论答案 1 :(得分:2)
我使用了一种相当奇怪的方法,但它有效:
$('.click-btn').click(function(){
$('.modal').show(); //show popup
})
$('body').click(function(){
$('.modal').hide(); //hide modal
})
$('.click-btn, .modal').click(function(e){
e.stopPropagation; // don't close modal by clicking inside modal and by clicking btn
})
答案 2 :(得分:0)
用户事件
function addEvent(action) {
$("body").click(function() { action();});
}
function clearEvent() {
$("body").off('click');
}
答案 3 :(得分:0)
你想这样做:
$(document).click(function()
{
popups_close();
})
$('Your selector of the popup').click(function(e)
{
e.stopPropagation();
})
.stopPropagation();
实际上会取消通过单击文档触发的.click()
函数。
因此,无论何时单击文档中的任何内容,弹出窗口都将关闭,除非单击弹出窗口本身。
希望这有帮助!
<强> jsFiddle 强>
答案 4 :(得分:0)
我认为您只想将overlayClose
和escClose
设置为true。您的插件可能会在页面上创建一个叠加层,因此用户无法在其他任何位置点击,因此我猜测overlayClose: true
会在点击叠加层时让插件关闭对话框。
escClose: true,
overlayClose: true
我不确定您使用的是哪个插件,但this one使用clickClose
属性。