私は自分の Web アプリのランディング ページに取り組んでおり、自分で作成したある種のモーダル ボックスを使用しています。ボックス自体とオーバーレイを表示するためにいくつかの jQuery を使用します。同じページに 3 つのモーダル ボックスがあり、各ボックスに 1 つのリンクで開くことができます。
私のコードは非常にうまく機能します (重いように見えますが [私は 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
私はそれに取り組んで2日が経ちましたが、まだ解決策が見つかりません。助けてください:)
編集: ボタンをクリックする、オーバーレイをクリックする、または ESC キーの 3 つの方法でモーダルを閉じることができます。バグは ESC キーでは発生しないことに注意してください。