这是从原来的一个重新的问题张贴在这里
我有一个页面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关闭用户界面对话框关键?
解决方案 :
禁用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