.toggle()
要素の表示・非表示を切り替えます。
- .toggle( [duration] [, callback] ) 1.0追加
- .toggle( [options] ) 1.0追加
- .toggle( [duration] [, easing] [, callback] ) 1.4.3追加
- .toggle( showOrHide ) 1.3追加
- 解説
- デモ
.toggle( [duration] [, callback] ) 1.0追加
戻り値:jQuery
引数 | 説明 |
---|---|
[duration] | 表示・非表示するアニメーション時間を指定します。 |
[callback] | アニメーション完了後に実行したい関数を指定します。 |
$('.target').toggle();
.toggle( [options] ) 1.0追加
戻り値:jQuery
引数 | 説明 |
---|---|
options |
型: メソッドに渡すオプションのマップになります。 |
.toggle( [duration] [, easing] [, callback] ) 1.4.3追加
戻り値:jQuery
引数 | 説明 |
---|---|
[duration] | 表示・非表示するアニメーション時間を指定します。 |
[easing] | アニメーションの変化の種類を指定します。 |
[callback] | アニメーション完了後に実行したい関数を指定します。 |
<div id="clickme">
ここをクリック
<img id="book" src="book.png" alt="" width="100" height="123" />
$('#clickme').click(function() {
$('#book').toggle('slow', function() {
// アニメーション完了後に実行したい処理
});
});
.toggle( showOrHide ) 1.3追加
戻り値:jQuery
引数 | 説明 |
---|---|
showOrHide | 対象の要素をtrue指定すれば表示、false指定すれば非表示にします。 |
下記の2つのコードは同じように動作します。
$('#foo').toggle(showOrHide);
if ( showOrHide == true ) {
$('#foo').show();
} else if ( showOrHide == false ) {
$('#foo').hide();
}
解説
注意:
eventのハンドリングも.toggle()
という名前のメソッドを持ちます。
このメソッドは渡された引数(関数)によって、発火の挙動が決まります。
引数が無い場合、.toggle()
メソッドは単純に要素の表示・非表示を切り替えます。
$( ".target" ).toggle();
CSSのdisplay
プロパティを変更することで、一致した要素はアニメーション無しで即座に表示・非表示されます。
もし、要素が最初から表示されていた場合は非表示になり、非表示であったならば表示されます。
このdisplay
の値は保存され、必要に応じて復元されます。
もし、要素がinline
のdisplay
値を持つ場合、それを隠した後にまた表示すると、
再びinline
の状態で表示されます。
duration、またはプレーンなオブジェクト、または単一の"complete"関数が提供された場合、
.toggle()
はアニメーション・メソッドになります。
.toggle()
メソッドは、一致した要素のwidth、height、opacityを同時にアニメーションします。
これらのプロパティが非表示のアニメーション後に0に達すると、
display
のプロパティはnone
に設定され、その要素はページのレイアウトに影響を与えなくなります。
durationへの数値はミリ秒として扱われ、高い値はアニメーションを遅くし、低い値はアニメーションを速めます。
文字列の'fast'
と'slow'
は、
それぞれ200
と600
ミリ秒のdurationとして扱われます。
他の文字列が指定された場合、またはdurationパラメーターが省略された場合、
デフォルトの400
ミリ秒が使用されます。
イージング(easing)
jQuery 1.4.3からは、イージング(easing)関数の文字列を任意に指定できるようになりました。 イージング関数は、アニメーションの異なるポイントでの進行の速度を指定するものです。
jQueryライブラリで指定できるイージングは、デフォルトのswing
と、
一定のペースで進行するlinear
のみです。
より多くのイージング関数を使用するにはプラグインが必要で、
特に有名なのはjQuery UIになります。
コールバック関数
指定された場合、アニメーションが完了した際に実行されます。
これは、続けて異なるアニメーションを実行したい際に便利です。
このコールバックは引数を送りませんが、this
にはアニメーションされているDOM要素が設定されています。
もし、複数の要素がアニメーションされている場合、
コールバックは一致した要素ごとに実行されるのであり、アニメーションごとに実行されるわけでは無いことに注意しなければいけません。
下記のような単純な画像の要素をアニメーションさせることも可能です。
<div id="clickme">
Click here
</div>
<img id="book" src="book.png" alt="" width="100" height="123">
$( "#clickme" ).click(function() {
$( "#book" ).toggle( "slow", function() {
// アニメーション完了後に実行したい処理
});
});
最初から要素が表示されていた場合、1度目のクリックでゆっくりそれを隠します。
2度目のクリックで、再びその要素を表示します。
このメソッドの2つ目のバージョンでは、Booleanパラメーターを受け取ります。
このパラメーターがtrue
なら一致した要素は表示され、false
ならこの要素は隠されます。
すなわち、この式は、
$( "#foo" ).toggle( display );
次の式と同義になります。
if ( display === true ) {
$( "#foo" ).show();
} else if ( display === false ) {
$( "#foo" ).hide();
}
アニメーションのOFF
-
.toggle()
を含む全てのjQueryのエフェクトは、jQuery.fx.off = true
にすることで実際にはdurationを0に設定することで、 グローバル全体でOFFにすることが可能です。 詳細は、jQuery.fx.offを参照してください。
デモ
P要素の表示、非表示を交互に切り替えます。
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<button>Toggle</button>
<p>Hello</p>
<p style="display: none">Good Bye</p>
<script>
$("button").click(function () {
$("p").toggle();
});
</script>
</body>
</html>
P要素の表示・非表示を交互に、0.6秒かけてアニメーションによって切り替えます。
<!DOCTYPE html>
<html>
<head>
<style>
p { background:#dad;
font-weight:bold;
font-size:16px; }
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<button>Toggle 'em</button>
<p>Hiya</p>
<p>Such interesting text, eh?</p>
<script>
$("button").click(function () {
$("p").toggle("slow");
});
</script>
</body>
</html>
P要素をflipの値が偶数の時には表示、奇数の時には非表示にします。
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<button>Toggle</button>
<p>Hello</p>
<p style="display: none">Good Bye</p>
<script>
var flip = 0;
$("button").click(function () {
$("p").toggle( flip++ % 2 == 0 );
});
</script>
</body>
</html>
© 2010 - 2017 STUDIO KINGDOM