点击任意位置关闭javascript弹出窗口

时间:2013-11-01 13:48:38

标签: javascript jquery wordpress

我是超级新手,需要快速建议。我已经在我的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();
}   

5 个答案:

答案 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)

我认为您只想将overlayCloseescClose设置为true。您的插件可能会在页面上创建一个叠加层,因此用户无法在其他任何位置点击,因此我猜测overlayClose: true会在点击叠加层时让插件关闭对话框。

    escClose: true,
    overlayClose: true

我不确定您使用的是哪个插件,但this one使用clickClose属性。