如何让jQuery UI的对话框打开关闭使用“越狱”的fancybox关键时(How to keep

2019-09-24 01:46发布

这是从原来的一个重新的问题张贴在这里

我有一个页面jQuery UI的对话 ,我从这样的对话窗口中的链接打开的fancybox。

典型的用户界面对话框的init是这样的:

 $("#dialog-modal").dialog({
  height: 240,
  modal: true
 }); // dialog

...和典型的fancybox(V2.1.1在这个例子中)INIT喜欢:

 $(".fancybox").fancybox({
  closeClick: false,
  helpers: {  
   title : { type : 'inside' }
  }
 }); // fancybox

......到目前为止好,没有什么特别的。 然后将HTML:

 <div id="dialog-modal" title="jQuery UI modal dialog">
  <p>You should be able to close this UI Dialog using the "escape" key.</p><br />
  <a class="fancybox" href="images/01.jpg" title="Press the 'escape' key to close Fancybox" >Open Fancybox</a>
 </div>

现在,问题是,如果我使用“关闭的fancybox escape ”键,两者的fancybox和用户界面对话框(从那里我发起的fancybox)关闭。

双方的fancybox和用户界面对话框可以通过关闭escape关键,但我非常希望保持用户界面对话框关闭的fancybox(与开后escape ,如果关闭的fancybox键)......与close的情况下按钮,用户界面对话框将保持打开。

为了说明这个问题,我创建了一个DEMO这里 。

所以,我怎么可以关闭使用的fancybox的escape没有从那里我打开的fancybox关闭用户界面对话框关键?

Answer 1:

解决方案 :

禁用escape两个的fancybox和用户界面对话框事件和捕获任何escape事件手动两种的fancybox(如果开启)或用户界面对话框,否则关闭。

为了避免被关闭按下escape的关键,无论是插件提供的API选项...所以对于UI对话框添加closeOnEscape设置选项false ,如:

$("#dialog-modal").dialog({
    height: 240,
    modal: true,
    closeOnEscape: false // disable escape event on dialog
}); // dialog

......为的fancybox使用键像API选项:

$(".fancybox").fancybox({
    closeClick: false,
    helpers: {
        title: {
            type: 'inside'
        }
    },
    keys: {
        close: [null] // disable escape on fancybox
    }
}); // fancybox

......再搭上文档的escape事件(使用jQuery .keyup()这个函数)和手动关闭的fancybox(如果开启)或用户界面对话框,否则:

$(document).keyup(function (event) {
    if (event.keyCode === 27) {
        // if fancybox is opened, close it, otherwise close dialog
        if ($.fancybox.isActive) {
            $.fancybox.close();
        } else {
            $("#dialog-modal").dialog("close");
        }
    }
}); //keyup

见工作演示和随意浏览源代码。

经测试在Chrome v22.0.1229.94男,火狐v16.0.1,IE7 +,歌剧v11.61(1250)和Safari(Windows)中v5.1.7(7534.57.2)



文章来源: How to keep the jQuery UI dialog opened when closing fancybox using the “escape” key