.toggle()

要素の表示・非表示を切り替えます。

.toggle( [duration] [, callback] ) 1.0追加

戻り値:jQuery

引数 説明
[duration] 表示・非表示するアニメーション時間を指定します。
[callback] アニメーション完了後に実行したい関数を指定します。
$('.target').toggle();

.toggle( [options] ) 1.0追加

戻り値:jQuery

引数 説明
options

型:PlainObject

メソッドに渡すオプションのマップになります。

duration

型:Number or String 初期値:400

アニメーションがどれぐらいの時間、実行されるのかを決定する値を指定します。

easing

型:String 初期値:swing

トランジション(移り変わり)に使用されるイージング(easing)関数を表す文字列を指定します。

queue

型:Boolean or String 初期値:true

エフェクトのキューに、アニメーションを追加するか否かを示す真偽値を指定します。 falseの場合は、そのアニメーションは即座に開始されます。

jQuery1.7から、文字列で表現されるアニメーションをキューに追加するケースで、 queueオプションが文字列も受け付けることが可能になりました。 カスタムのキュー名が使用されている場合、アニメーションは自動的に実行されません。 開始するには、.dequeue("queuename")を呼びださなければいけません。

specialEasing

型:PlainObject

1つ以上のCSSプロパティを含むオブジェクトを指定します。 このCSSプロパティの値には、イージング(easing)を指定します。 (1.4 追加)

step

型:Function( Number now, Tween tween )

それぞれのアニメーション要素の、それぞれのアニメーションされるプロパティのために呼び出される関数を指定します。 この関数は、プロパティの値が設定される前にそれを変更する出来るように、Tweenオブジェクトを修正する機会を提供してくれます。

progress

型:Function( Promise animation, Number progress, Number remainingMs )

アニメーションの各ステップの後に呼び出される関数を指定します。 アプにメーションのプロパティの数に関係なく、アニメーションされる要素毎に1度だけ呼びだされます。 (1.8 追加)

complete

型:Function()

要素のアニメーションの完了時に一度だけ呼び出される関数を指定します。

start

型:Function( Promise animation )

要素のアニメーションが開始される際に呼び出される関数を指定します。 (1.8 追加)

done

型:Function( Promise animation, Boolean jumpedToEnd )

要素のアニメーションの完了の際に呼び出される関数を指定します。 (Promiseオブジェクトは解決(resolved)されています) (1.8 追加)

fail

型:Function( Promise animation, Boolean jumpedToEnd )

要素のアニメーションの完了失敗の際に呼び出される関数を指定します。 (Promiseオブジェクトは拒絶(rejected)されています) (1.8 追加)

always

型:Function( Promise animation, Boolean jumpedToEnd )

要素のアニメーションが完了、または完了せずに停止した際に呼び出される関数を指定します。 (Promiseオブジェクトは、解決(resolved)または拒絶(rejected)のいずれかになります。) (1.8 追加)

.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の値は保存され、必要に応じて復元されます。 もし、要素がinlinedisplay値を持つ場合、それを隠した後にまた表示すると、 再びinlineの状態で表示されます。

duration、またはプレーンなオブジェクト、または単一の"complete"関数が提供された場合、 .toggle()はアニメーション・メソッドになります。 .toggle()メソッドは、一致した要素のwidth、height、opacityを同時にアニメーションします。 これらのプロパティが非表示のアニメーション後に0に達すると、 displayのプロパティはnoneに設定され、その要素はページのレイアウトに影響を与えなくなります。

durationへの数値はミリ秒として扱われ、高い値はアニメーションを遅くし、低い値はアニメーションを速めます。 文字列の'fast''slow'は、 それぞれ200600ミリ秒の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度目のクリックでゆっくりそれを隠します。

0042 06 hide

2度目のクリックで、再びその要素を表示します。

0042 06 show

このメソッドの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>

 Back to top

© 2010 - 2017 STUDIO KINGDOM