jQuery - 在转义时,如果覆盖未打开则关闭窗口

时间:2012-01-13 06:01:15

标签: javascript jquery

按下转义键时,我想关闭一个子窗口,但首先要检查是否有打开的叠加层。如果打开了叠加层并按下了退出键,我只想关闭叠加层。如果用户再次按下escape,我希望它关闭子窗口。

所以,我首先要检查叠加层是否打开。我的所有叠加层都有一个.simpleOverlay类和一个类.closeOverlayBtn的关闭按钮,所以我想在关闭窗口之前有一个检查该类是否具有焦点的函数,如下所示:

if (e.keyCode == 27) { // "Esc" Key
   if ( $('.simpleOverlay').is(':focus') ) {
       $('.closeOverlayBtn').trigger('click');
   }
   else {
       window.close();
   }    
   return(false);
}

但这不会发生!!如果我用.trigger替换alert()行,当叠加层关闭并打开时,我会收到提醒,不是很好!

这是解决这个问题的正确方法,还是我完全错过了什么?

2 个答案:

答案 0 :(得分:3)

试试这个:

if (e.keyCode == 27) { // "Esc" Key

   if ( $('.simpleOverlay').is(':visible') ) {
       $('.closeOverlayBtn').click();
   }
   else {
       window.close();
   }    
   return(false);
}

答案 1 :(得分:0)

使用现代JS

if (e.key === "Escape") {
   if ($('.simpleOverlay').is(':visible')) {
       $('.closeOverlayBtn').click();
   }
   else {
       window.close();
   }    
   return false;
}