我正在为我的网络应用程序开发一个登陆页面,并且我正在使用我构建的某种模式框。它使用一些 jQuery 来显示框本身和覆盖。同一页面上有 3 个模式框,您可以使用每个框的一个链接打开它们。
我的代码工作得非常好(尽管它看起来很重[我不是 Javascript 方面的专家,但我总是尽可能多地尝试一下])。但是当我关闭模态框时,覆盖层会按预期滑出,但动画会重复 3 次(可能是因为 3 模态框的代码)。
所以,我的代码完全在线 → http://graphix.net23.net/app/
这是 jsFiddle 供您玩 :) → http://jsfiddle.net/EY59T/(该错误并不真正可见,您只能看到覆盖需要一段时间才能摆脱)
我已经尝试过 .stop() 功能。它解决了当您显示第一个模态时的问题,但是当您单击另一个模态时,覆盖不会出现。
看看我的繁重代码:
// iOS Modal
$("a#modal-open").click(function () {
$("div#modal-ios").show("fade", 600);
$("div.modal-overlay").show("slide", 300);
$(".app h4").hide("fade", 300);
$("div.app").animate({backgroundPositionY:-120}, 600);
return false;
});
$("a#modal-done,div.modal-overlay").click(function () {
$("div#modal-ios").hide("fade", 600);
$("div.modal-overlay").hide("slide", 300);
$(".app h4").show("fade", 600);
$("div.app").animate({backgroundPositionY:0}, 600);
return false;
});
$( document ).on( 'keydown', function ( e ) {
if ( e.keyCode === 27 ) {
$("div#modal-ios,div.modal-overlay").hide("fade", 300);
$(".app h4").show("fade", 300);
$("div.app").animate({backgroundPositionY:0}, 600);
}
});
// END iOS Modal
// Android Modal
$("a#modal-open-android").click(function () {
$("div#modal-android").show("fade", 600);
$("div.modal-overlay").show("slide", 300);
return false;
});
$("a#modal-done,div.modal-overlay").click(function () {
$("div#modal-android").hide("fade", 600);
$("div.modal-overlay").hide("slide", 300);
return false;
});
$( document ).on( 'keydown', function ( e ) {
if ( e.keyCode === 27 ) {
$("div#modal-android,div.modal-overlay").hide("fade", 300);
}
});
// END Android Modal
// WP Modal
$("a#modal-open-wp").click(function () {
$("div#modal-wp").show("fade", 600);
$("div.modal-overlay").show("slide", 300);
return false;
});
$("a#modal-done,div.modal-overlay").click(function () {
$("div#modal-wp").hide("fade", 600);
$("div.modal-overlay").hide("slide", 300);
return false;
});
$( document ).on( 'keydown', function ( e ) {
if ( e.keyCode === 27 ) {
$("div#modal-wp,div.modal-overlay").hide("fade", 300);
}
});
// END WP Modal
已经两天了,我正在研究它,但仍然找不到有效的解决方案,请帮助我:)
编辑:您可以通过三种不同的方式关闭模式:单击按钮、单击覆盖或 ESC 键。请注意,该错误不会发生在 ESC 键上。