4

我是超级新手,需要一个快速的建议。我在我的 wordpress 网站上安装了一个基于 javascript 的弹出插件,当有人访问该网站时,女巫会自动打开。要关闭弹出窗口,用户必须单击弹出窗口角落的十字 X。

我需要编辑插件,以便用户可以点击任何地方,插件将关闭。

这是我找到的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();
}   
4

5 回答 5

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 的一些优雅修改的评论

于 2013-11-01T13:54:39.960 回答
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
})
于 2013-11-01T14:22:50.477 回答
0

你想这样做:

$(document).click(function()
{
     popups_close();
})

$('Your selector of the popup').click(function(e)
{
    e.stopPropagation();          
})

.stopPropagation();实际上会取消.click()在文档中点击触发的功能。因此,无论何时单击文档中的任何位置,弹出窗口都会关闭,除非单击弹出窗口本身。

希望这有帮助!

jsFiddle

于 2013-11-01T14:29:02.380 回答
0

我认为您只想设置overlayClose并可能escClose为真。您的插件可能会在页面上创建一个覆盖,因此用户无法单击其他任何位置,所以我猜想overlayClose: true当单击覆盖时插件会关闭对话框。

    escClose: true,
    overlayClose: true

我不确定您使用的是什么插件,但这个插件使用了一个clickClose属性。

于 2013-11-01T20:23:15.860 回答
0

用户事件

function addEvent(action) {
    $("body").click(function() { action();});
}

function clearEvent() {
    $("body").off('click');
}
于 2013-11-01T13:58:06.643 回答