按下ESC时关闭灯箱

时间:2010-08-26 19:13:28

标签: jquery

我在按下逃生时尝试关闭灯箱,但弹出窗口没有关闭。

$(document).keypress(function(e){

    if(e.keyCode==27 && popupStatus==1){

        disablePopup();
    }
});

这是完整的代码:

var popupStatus = 0;
var buttonDivID = "";
var conDivID = "";

//determine which div is clicked
function setDiv( div ) {
    if( div==1){
        conDivID = "#intro";
    }
    if( div==2) {
        conDivID = "#presentation";
    }
}

//loading popup with jQuery magic!

function loadPopup(){

    //loads popup only if it is disabled

    if(popupStatus==0){

        $("#backgroundPopup").css({

            "opacity": "0.7"

        });

        $("#backgroundPopup").fadeIn("slow");

        $(conDivID).fadeIn("slow");

        $(conDivID).CenterIt();

        popupStatus = 1;

    }

}

//disabling popup with jQuery magic!

function disablePopup(){

    //disables popup only if it is enabled

    if(popupStatus==1){

        $("#backgroundPopup").fadeOut("slow");

        $(conDivID).fadeOut("slow");

        popupStatus = 0;
        buttonDivID = "";
        conDivID = "";
    }
}



//centering popup

function centerPopup(){

    //request data for centering

    var windowWidth = document.documentElement.clientWidth;

    var windowHeight = document.documentElement.clientHeight;

    var popupHeight = $(conDivID).height();

    var popupWidth = $(conDivID).width();

    //centering

    $(conDivID).css({

        "position": "absolute",

        "top": windowHeight/2-popupHeight/2,

        "left": windowWidth/2-popupWidth/2

    });

    //only need force for IE6

    $("#backgroundPopup").css({

        "height": windowHeight

    });
}

//CONTROLLING EVENTS IN jQuery

$(document).ready(function(){

    $("#vid2").click(function(){
    //set the lightbox divs
    setDiv(2);
    loadPopup();
    });

    //CLOSING POPUP

    //Click the x event!

    $(".popupContactClose").click(function(){

        disablePopup();

    });

    //Press Escape event!

    $(document).keypress(function(e){

        if(e.keyCode==27 && popupStatus==1){

            disablePopup();
        }
    });
});

另一种方法是单击x按钮,正确关闭弹出窗口。为什么不关闭呢?

3 个答案:

答案 0 :(得分:17)

这有效:

$(document).ready(function(){
    $(document).bind('keydown', function(e) { 
        if (e.which == 27) {
            alert('esc pressed');
        }
    }); 
});

答案 1 :(得分:2)

这是一个错误:转义按钮在jquery.lightbox-0.5

不起作用

解决方案: http://code.google.com/p/jquery-lightbox/issues/detail?id=27#c4

  

我不确定这是否已由灯箱人员修复过。我做了一个   一点点的调试,发现在第339行   jquery.lightbox-0.5js,escapeKey被设置为'undefined'   Mozilla浏览器的第339行。所以,我添加了以下块   第341行的代码将escapeKey var重新设置为'27':

    // Fix because Escape Key wasn't being detected
    if (escapeKey == undefined) { escapeKey = 27; }
     

那应该在'//以小写形式获取密钥'的正上方   评论,你可以在文件中快速搜索。

     

现在适合我。

答案 2 :(得分:2)

只需使用 keyup 代替 keypress 代替 keyCode 。 当您使用按键时,Chrome没有返回Escape的任何密钥代码,Firefox返回零。

$(document).keyup(function(e){

    if(e.which == 27 && popupStatus == 1){

        disablePopup();
    }
});