4

私は超初心者で、簡単なアドバイスが必要です。WordPress サイトに JavaScript ベースのポップアップ プラグインをインストールしました。誰かがサイトにアクセスすると、魔女が自動的に開きます。ポップアップを閉じるには、ユーザーはポップアップの隅にある×印をクリックする必要があります。

ユーザーがどこでもクリックできるようにプラグインを編集する必要があり、プラグインは閉じます。

これが私が見つけた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()ドキュメント内をクリックしてトリガーされた機能を実際にキャンセルします。したがって、ポップアップ自体をクリックした場合を除いて、ドキュメント内のどこかをクリックすると、ポップアップが閉じます。

これが役に立ったことを願っています!

jsフィドル

于 2013-11-01T14:29:02.380 に答える
0

ユーザーイベント

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

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