簡體   English   中英

基本彈出窗口無法正常工作

[英]Basic Popup window not working properly

我嘗試創建的彈出窗口有一個小問題。

當單擊一個按鈕(具有特定ID的任何按鈕)時,它應該打開(這似乎起作用),但是當我打開它時,我想要它,因此,如果您單擊除主彈出窗口之外的任何內容,它都應該關閉。

但是,當我單擊寬度為100%,高度為100%的.overeverythingCover時,它似乎沒有關閉。

http://jsfiddle.net/mnW7U/

$('#activatePopOver, .overeverythingCover').click(function() {
        popUpOverEverything();
   });

function popUpOverEverything(data) {
    // if exists | remove it
    if ($('.overeverythingCover').length) {
        $('.overeverythingCover').empty();
        $('.overeverythingCover').removeClass();
        $('body').css('overflow', 'scroll');
        console.log("hehe");
    } else {
        $('body').append('<div class="overeverythingCover"</div>');
        $('.overeverythingCover').append('<div class="overEverything"</div>');
        $('body').css('overflow', 'hidden');
        $('.overEverything').html(data);
    };
}

謝謝!

您不能對尚不存在的元素使用“點擊”處理程序。 您可以使用.live:

$(function() {
    $('#activatePopOver, .overeverythingCover').live('click', function() {
        popUpOverEverything();
   });

    function popUpOverEverything(data) {
        if ($('.overeverythingCover').length > 0) {
            $('.overeverythingCover').remove();
            $('body').css('overflow', 'scroll');
        } else {
            $('body').append('<div class="overeverythingCover"</div>');
            $('.overeverythingCover').append('<div class="overEverything"</div>');
            $('body').css('overflow', 'hidden');
            $('.overEverything').html(data);

            // Just close when you click outside the popup
            $('.overEverything').click(function(event){
                event.stopPropagation();
            });
        };
    }
});

參見小提琴: http : //jsfiddle.net/mnW7U/3/

使用委托事件偵聽器,例如:

$(document).on("click", '#activatePopOver, .overeverythingCover', function() {
    popUpOverEverything();
});

就像提到的Wobbuffet一樣,問題在於綁定事件時頁面上沒有.overerverythingCover div。

注意:這僅適用於jQuery 1.7+

對於較舊的版本,您可以使用.delegate()

問題是您將click事件綁定到頁面上尚不存在的元素。

我用一個簡單易懂的示例更新了您的小提琴: http : //jsfiddle.net/mnW7U/2/

我創建了一個popDown()函數,該函數在單擊按鈕時與以下函數綁定:

 $('.overeverythingCover').click(function() {
      popDown();
 });

問題是這樣的:

$('body').append('<div class="overeverythingCover"</div>');

將click事件添加到該事件之后,將其追加。 嘗試將其添加到dom(html中的none-js),然后弄亂它的display屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM