hide()は、show()の逆の命令です。
表示されている状態(display:block)のHTML要素を
非表示(display:none)にします。
show()と同様にhide(...)の括弧内にはアニメーションの
スピードとコールバック関数を設定でき、指定した
スピードで透明度、高さ、幅を徐々に変化させながら
要素を非表示にします。
$( セレクター ).hide( スピード, コールバック関数 );
サンプルコードを実行すると分かりますが、
表示、非表示ボタンを押すと青い四角が消えたり、
現れたりしているのが分かるかと思います。
hide()はshow()と同様に、スピードの指定を省略すると
アニメーションの表示はしないで、すぐに非表示にします。
アニメーションが止まらないんだけど
サンプルコードの33行目~38行目のコードには
問題点があります。show()/hide()は1回のアニメーション処理が
終ってから次のアニメーション処理を実行するので
アニメーションの実行中に表示・非表示ボタンを素早く
連打すると、押した分だけアニメーションが行われ、
そのアニメーションが完全に終わるまで待たなければなりません。
この問題を解決するのが、アニメーション処理中の
要素を選択できるセレクター:animatedです。
:not(animated)と書くと、
「アニメーション処理中ではない要素」を
絞り込めます。その:animatedを使ったのが、サンプルコードの
40行目~45行目です。
実行結果はこちらです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>jQueryStudy</title> <style> *{margin:0;padding:0;} #container{ width:640px; height:400px; background-color:white; font-weight:100; margin:0 auto;} div{ width:100px; height:100px; display:block; background-color:blue;} </style> <script src="js/jquery-1.11.3.js"></script> </head> <body> <button id="show">表示</button> <button id="hide">非表示</button> <div></div> <script> $(function(){ /* $("button#show").click(function(){ $("div").show("slow"); }); $("button#hide").click(function(){ $("div").hide("slow"); }); */ $("button#show").click(function(){ $("div:not(:animated)").show("slow"); }); $("button#hide").click(function(){ $("div:not(:animated)").hide("slow"); }); }); </script> </body> </html> |