これが私の問題です。私のサイトのログインフォームを切り替えるために作成されたカスタムjqueryがあります。次に、ここで見つけたコードを追加して、クリックするとそのボックスを閉じます。
このdiv内にイン/アウトを切り替えるファンシーボックスへのリンクがあるため、問題が発生します。クリックオフと一緒に使用しているのでevent.stopPropagation();
、そのファンシーボックスのリンクが台無しになります。完全なコード例を以下に示します。
//Login Toggle
$('a.login').click(function() {
if ($('.login-box').is(':hidden')){
$('.login-box').fadeIn('normal');
$('span.arrow-up').fadeIn('normal');
$(this).text('Close');
}
else{
$('.login-box').fadeOut('normal');
$('span.arrow-up').fadeOut('normal');
$(this).text('Log-In');
}
});
//Close when click off login
$('html').click(function() {
$('.login-box').fadeOut('normal');
$('span.arrow-up').fadeOut('normal');
$('a.login').text('Log-In');
});
//Exclude these divs, so clicking inside them won't close login
$('.login-box, a.login, span.arrow-up').click(function(event){
event.stopPropagation();
});
//Forgot Password Fancybox
$("a.fancybox").fancybox({
maxWidth : 800,
maxHeight : 600,
fitToView : false,
width : '70%',
height : '70%',
autoSize : false,
closeClick : false,
openEffect : 'fade',
closeEffect : 'fade'
});
stopPropagationを削除すると、すべてが期待どおりに機能し(ファンシーボックスボタンが機能します)、ログインボックスの外側をクリックしてログインボックスを閉じることができなくなります。fancyboxの機能を壊さない、よりスマートな書き方を教えてくれる人はいますか?