2017-06-12 8 views
0

このjavascript/jqueryは、divをクリックするか、escを押すか、オブジェクトの外側をクリックするなど、いくつかの異なる機能を持つポップアップを閉じるのに役立ちます。このコードを短縮する方法はありますか?あるいはそれを書く良い方法はありますか?ありがとう!Javascriptを閉じる(.popup)divにするにはどうしたらいいですか?

$(function() { 
    $('.ex').click(function() { 
     $('.popup').removeClass('fadeIn').slideUp(1000); 
     $('.blurme').removeClass('blur'); 
    }); 
}); 

$(document).on('keydown', function (e) { 
    if (e.keyCode === 27) { // ESC 
     $('.popup').removeClass('fadeIn').slideUp(1000); 
     $('.blurme').removeClass('blur'); 
    } 
}); 

$(document).click(function (e) { 
    if (e.target.id != 'popup') { 
     $('.popup').removeClass('fadeIn').slideUp(1000); 
     $('.blurme').removeClass('blur'); 
    } 
}); 
+1

一つのオプションは '実際のクロージングコードが含まれており、ちょうどあなたのハンドラでそれを呼び出すために)('関数closePopupを持っているだろう連鎖することができます。あるいは、 "プライマリ"ハンドラ(例えばクローズボタン)があれば、他のイベントに '$( 'ex')を実行させることができます。trigger( 'click');' –

+1

アクションは常に同じなので、関数を作成します。 – doutriforce

答えて

1

はい、factori seのclosePopup()機能です。また$(document).on(...).click(...)

function closePopup() { 
    $('.popup').removeClass('fadeIn').slideUp(1000); 
    $('.blurme').removeClass('blur'); 
} 

$(function() { 
    $('.ex').click(closePopup); 
}); 

$(document).on('keydown', function (e) { 
    if (e.keyCode === 27) closePopup() 
}).click(function (e) { 
    if (e.target.id != 'popup') closePopup() 
}); 
0

あなたの機能に非常にredondantコードを持っている:

まず、ポップアップが閉じられるの関数を作成:

var _closePopup = function(){ 
     $('.popup').removeClass('fadeIn').slideUp(1000); 
     $('.blurme').removeClass('blur'); 
} 

_closePopup()

$(function() { 
    $('.ex').click(function() { 
     _closePopup() 
    }); 
}); 

$(document).on('keydown', function (e) { 
    if (e.keyCode === 27) { // ESC 
     _closePopup() 
    } 
}); 

$(document).click(function (e) { 
    if (e.target.id != 'popup') { 
     _closePopup() 
    } 
}); 
を使用して関数内でそれを呼び出します
+0

さらに '$( '。ex')を短縮することができます。(_closePopup)' –

+0

これは、2回の関数呼び出しを防ぐための構文です。多分それは所有者の質問を混乱させるでしょう。しかし、真の;これはそのように最小限に抑えることができます。 – aorfevre

+0

さて、別の関数を呼び出す関数ではなく、ただ一つの関数を渡すだけです:) –

関連する問題