jQuery WEB制作

クリックイベントで表示させた要素を領域外クリックで非表示にする方法

クリック

クリックイベントで出現させた要素を、再びクリックして要素を消したい!

というご要望にお答えします。

ポイントは、出現した要素をクリックして非表示するのではなく、サイト上どこをクリックしてもその要素を消せる。

いわゆる 領域外クリック というやつですね。

今回はこれを紹介します。

サンプルコード

水色のボックスをクリックすると、下に緑のボックスが表示されます。

表示された緑のボックス以外、どこをクリックしても非表示になります。

See the Pen
Untitled
by t.h (@tomtom15)
on CodePen.

jQueryの解説

id名は、わかりやすいように日本語にしてあります。

もちろんclass名に変えても問題ありません。

 

#ボタンやアイコンをクリックして、#出現させる/させた要素をフェードイン/アウトさせる、設定としています。

《1》$(document).on('click', function(e) {
《2》if(!$(e.target).closest('#出現させる要素').length && !$(e.target).closest('#ボタンやアイコン').length){
《3》$('#出現させた要素').fadeOut();
《4》}else if($(e.target).closest('#ボタンやアイコン').length){
《5》if($('#出現させる要素').is(':hidden')){
$('#出現させる要素').fadeIn();
《6》}else{
$('#出現させた要素').fadeOut();
}
}
});

 

《1》クリックイベントを設定【.on('click', function(e)】

《2》クリックした場所を、lengthを使って判別します。

クリックした場所が#出現要素でもなく(&&)、#ボタン/アイコンでもなければ(「!」で否定します)、

《3》#出現させた要素をフェードアウトさせます。

《4》別条件→クリックした場所が#ボタン/アイコンの場合、

《5》#出現要素が隠れているのなら(':hidden')、フェードイン。

《6》そうでないのなら(出現しているなら)フェードアウト。

と言う意味合いですね。

 

 

 

まとめ

いかがでしたでしょうか。

モーダル、検索窓、いろいろ応用できるのでぜひお試しください。

 

今回はこちらのサイトを参考にさせていただきました。とてもわかりやすいですので参考にしてみてください。

https://to-benefit7.com/outofrange-popup-close/

 

セレクタ関連の記事も紹介しておきますね↓

アイキャッチ
【jQuery】対象要素(セレクタ) を2つ指定したいときのコード

続きを見る

-jQuery, WEB制作
-,

© 2024 人生フリーハンド Powered by AFFINGER5