2024年06月13日

jquery:toggle()


このメソッドの説明

toggle() はjQueryメソッドです。

要素の開閉に利用されます。

 


メソッド

セレクタ.toggle( effect , options , duration , callback )

 


パラメータ

effect (文字列)(省略可)

要素を開閉する時のeffect(効果)を指定します。

 

options (文字列)(省略可)

effect 毎に定められた「オプション名」と「 」を指定します。

指定方法は{ オプション名① : , オプション名② : }の形式で記述します。

 

duration (整数 | 指定パラメータ)(省略可)

開閉の実行時間

初期値:0(パラメータが何も指定されてない場合)

パラメータを指定した場合は:400ms

数値で指定する以外に下記の文字列でも可

'slow'    :600ms

'normal':400ms

'fast'    :200ms

 

complete (関数)(省略可)

開閉の終了後に実行する関数

 


1.表示効果を指定しない事例

①パラメータを何も指定しないトグル

下記のボタンを挿入して下さい。開閉時間は0です。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p><button class='toggle01' style='padding:5px 10px;background:cyan'>トグルによる開閉</button></p>
<div class='toggle_target01' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.toggle01').parent().next().css('display','none');
		$('.toggle01').click(function(){
			$(this).parent().next().toggle();
		});
	});
</script>

■1~4行目:HTML

■ボタンがクリックされたら、ボタンの親の次の要素を開閉しています。

トグルプログラムを作成する上での注意点

トグルは1つの文書中に複数配置される事があります。

そこでトグルプログラムは、クリックされた要素を基準parent()children()next()、prev()を使って操作する必要があります。

これにより、文書中に複数のトグルがあっても、操作が可能になります。

近隣要素の選択方法は 階層構造の要素セレクト操作 を参照してください。

 

complete を指定したトグル

下記のボタンを挿入して下さい。

トグル後に、ボタンのテキストを変更します。

又、callbackパラメータを指定したので開閉時間は400msになります。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p><button class='toggle02' style='padding:5px 10px;background:cyan'>開く▼</button></P>
<div class='toggle_target02' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.toggle_target02').css('display','none');
		$('.toggle02').click(function(){
			$('.toggle_target02').toggle(function(){
				var flg = $('.toggle_target02').css('display');
				if(flg == 'block'){$('.toggle02').text('コンテンツを閉じる▲');}
				else{$('.toggle02').text('開く▼');}
			});
		});
	});
</script>

■9~13行目

トグルが完了して時に関数を実行し、コンテンツの表示/非表示に合わせてボタンの文字を変更しています。これを指定したので開閉時間は400msになります。

■開閉時間を0にする場合は9行目の指定を下記に変更します。

.toggle(function(){ ➡ .toggle(0,function(){

 

2.表示効果を指定した事例

下記の表示効果(エフェクト)を利用する為には JQuery UI が必要となります。

導入の仕方は、jQuery機能の追加 を参照してください。

ここで利用している 表示効果 は下記になります。

項番 JQuery UI 説明
slide BOXサイズがすべる様に移動する効果です。

スライドさせる方向と移動量が指定できます。

drop BOXサイズ固定で移動しながら変化する効果です。

ドロップさせる方向が指定できます。

blind ブラインドを降ろす様な効果です。

ブラインドの方向が指定すできます。

clip 上下や左右にクリップする効果です。

クリップする方向を上下か左右を指定できます。

fold 上や左に縮める効果です。

縮めるサイズと方向を指定できます。

fade 徐々に消し、徐々に表示させる効果です。

パラメータはありません。

scale 縮小/拡大させる効果です。

縮小/拡大の基点を中心、左上、右下を選択できます。

sizeとの違いは、縮小方向を垂直や左右で指定できる点です。

size 縮小/拡大させる効果です。

縮小/拡大の基点を中心、左上、右下を選択できます。

scaleとの違いは、縮小後のサイズを指定できる事です。

puff 膨らませる効果です。

膨らませでなく、縮める効果も選択できます。

bounce バウンドさせる効果です。

バウンド量と回数を指定できます。

explode 要素を分割して爆破させる効果です。

分割数を指定できます。

pulsate 要素を点滅させる効果です。

点滅させる回数を指定できます。

shake 要素をシェイクする効果です。

振る方向、振り幅、回数を指定できます。

highlight 背景色を変更する効果です。

背景色の指定ができます。

①slide効果

スライド効果(BOXサイズがすべる様に移動)で要素をトグルします。一覧リストに戻る

オプション名 説明
direction スライドする方向を指定する

{direction:'left'}    : 左から表示し、左に非表示します。:デフォルト

{direction:'right'}  : 右から表示し、右に非表示します。

{direction:'up'}     : 上から表示し、上に非表示します。

{direction:'down'} : 下から表示し、下に非表示します。

distance 移動量を数値で指定します。

幅が200pxの要素を横にスライドさせる場合、

デフォルトは、210ぐらいになります。

200にするとブラインドの様な動きになります。

300にすると画面から完全に消えるまでスライドします。

■指定方法は('slide',{direction:値, distance:値},アニメ時間,function(){アニメ後の処理})で指定します。

事例

■左から表示し、左に非表示します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect01' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target01' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target01').css('display','none');
		$('.efect01').click(function(){
			$('.efect_target01').toggle('slide' , 1000 );
		});
	});
</script>

■10~12行目

スライド効果でトグルしています。トグル時間は1秒

②drop効果

ドロップ効果(BOXサイズ固定で移動しながら変化)で要素をトグルします。一覧リストに戻る

オプション名 説明
direction ドロップさせる方向を指定します。

{direction:'leftl'}   : 左から表示し、左に非表示します。

{direction:'right'}  : 右から表示し、右に非表示します。

{direction:'up'}     : 上から表示し、上に非表示します

{direction:'down'} : 下から表示し、下に非表示します。

■指定方法は('drop',{direction:値},アニメ時間,function(){アニメ後の処理})で指定します。

事例

■左から表示し、左に非表示します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect02' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target02' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target02').css('display','none');
		$('.efect02').click(function(){
			$('.efect_target02').toggle('drop' , 1000 );
		});
	});
</script>

■10~12行目

ドロップ効果でトグルしています。トグル時間は1秒

③blind効果

ブラインド(ブラインドを降ろす様な)効果で要素をトグルします。一覧リストに戻る

オプション名 説明
direction ブラインドの方向を指定する

{direction:'vertical'}   :上から表示し、上に非表示する。デフォルト

{direction:'down'}      :下から表示し、下に非表示する。

{direction:'horizontal'}:左から表示し、左に非表示する。

{direction:'right'}       :右から表示し、右に非表示する。

■指定方法は('drop',{direction:値},アニメ時間,function(){アニメ後の処理})で指定します。

事例

■上から表示し、上に非表示します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect03' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target03' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target03').css('display','none');
		$('.efect03').click(function(){
			$('.efect_target03').toggle('blind' , 1000 );
		});
	});
</script>

■10~12行目

ブラインド効果でトグルしています。トグル時間は1秒

④clip効果

クリップ(上下や左右にクリップする様な)効果で要素をトグルします。一覧リストに戻る

オプション名 説明
direction クリップの方向を指定します。

{direction:'vertical'}   :中心から上下に表示し、上下から中心に非表示する。デフォルト

{direction:'horizontal'}:中心から左右に表示し、左右から中心に非表示する。

■指定方法は('clip',{direction:値},アニメ時間,function(){アニメ後の処理})で指定します。

事例

■中心から上下に表示し、上下から中心に非表示します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect04' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target04' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target04').css('display','none');
		$('.efect04').click(function(){
			$('.efect_target04').toggle('clip' , 1000 );
		});
	});
</script>

■10~12行目

クリップ効果でトグルしています。トグル時間は1秒

⑤fold効果

ホールド(上や左に縮めるような)効果で要素をトグルします。一覧リストに戻る

オプション名 説明
size 縮めた後のサイズ

数値で指定します。初期値は15px

見えなくする時は size:1 で指定します。

horizFirst 縮める順番

false:デフォルト

水平方向→垂直方向に表示し、垂直方向→水平方法に縮めて非表示します。

true

垂直方法→水平方向に表示し、水平方向→垂直方向に縮めて非表示します。

■指定方法は('fold',{size:値,horizFirst,真偽値},アニメ時間,function(){アニメ後の処理})で指定します。

事例

■水平方向、垂直方向に表示し、垂直方向、水平方法に縮めて非表示します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect05' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target05' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target05').css('display','none');
		$('.efect05').click(function(){
			$('.efect_target05').toggle('fold' , 1000 );
		});
	});
</script>

■10~12行目

ホールド効果でトグルしています。トグル時間は1秒

⑥fade効果

フェイド(徐々に消し、徐々に表示する様な)効果で要素をトグルします。一覧リストに戻る

ありません。

事例

■徐々に濃くなって表示し、徐々に薄くなって非表示します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect06' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target06' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target06').css('display','none');
		$('.efect06').click(function(){
			$('.efect_target06').toggle('fade' , 1000 );
		});
	});
</script>

■10~12行目

フェイド効果でトグルしています。トグル時間は1秒

⑦scale効果

スケール(縮小/拡大させる)効果で要素をトグルします。一覧リストに戻る

デフォルトではsizuと同じになります。

sizeとの違いは、縮小方向を垂直や左右で指定できる点です。

オプション名 説明
origin 縮小/拡大する基点

中心:[ 'middle' , 'center' ]デフォルト

左上:[ 'top' , 'left' ]

右下:[ 'bottom' , 'right' ]

percent 拡大するか縮小するか?を数値で指定します。

初期値:0

100未満は縮小

100以上は拡大

direction 縮小/拡大する方向

'both':両方が対象(初期値)

'vertical':水平方向の縮小/拡大 percentに0以外(例:1)を指定する必要がある。

'horizontal':垂直方向の縮小/拡大 percentに0以外(例:1)を指定する必要がある。

scale スケールの対象要素

'both':総ての要素を縮小対象とする(デフォルト)

'box':要素のborderとpaddingを縮小対象とする。

'content':要素のテキストを縮小対象とする。

■指定方法は('scale',{origin:値, percent:値 ,・・・},アニメ時間,finction(){アニメ後の処理})で指定します。

事例

■中心から拡大して表示、中心に縮小して非表示します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect07' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target07' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target07').css('display','none');
		$('.efect07').click(function(){
			$('.efect_target07').toggle('scale' , 1000 );
		});
	});
</script>

■10~12行目

スライド効果でトグルしています。トグル時間は1秒

⑧size効果

サイズ(縮小/拡大させる)効果で要素をトグルします。一覧リストに戻る

デフォルトではscaleと同じになります。

scaleとの違いは、縮小後のサイズを指定できる事です。

オプション名 説明
from アニメーション開始のサイズ。
to アニメーション完了後のサイズ デフォルトは0

to:{width:n,height:m}で指定します。

注意点1:幅と高さは波括弧{}で括ります。

注意点2:これを指定すると収束点は['top','left'] になります。

origin 効果の収束点

中心:origin:['middle','center']  デフォルト

左上:origin:['top','left']        注意点:角括弧[]で括ります。

右下:origin:['bottom','right'] 注意点:角括弧[]で括ります。

scale リスケールの対象要素

'both':総ての要素を縮小対象とする(デフォルト)

'box':要素のborderとpaddingを縮小対象とする。

'content':要素のテキストを縮小対象とする。

■指定方法は('size',{origin:値,・・・},アニメ時間,function{アニメ後の処理})で指定します。

事例

■中心から拡大して表示、中心に縮小して非表示します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect08' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target08' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target08').css('display','none');
		$('.efect08').click(function(){
			$('.efect_target08').toggle('size' , 1000 );
		});
	});
</script>

■10~12行目

サイズ効果でトグルしています。トグル時間は1秒

⑨puff効果

パフ(膨らませる)効果で要素をトグルします。一覧リストに戻る

オプション名 説明
percent 膨らませるか萎ませるかを数値で指定します。

初期値は 150 なので膨らませ効果になります。

100未満を指定すると萎ませ効果になります。

■指定方法は('percent',{percent:値},アニメ時間,function(){アニメ後の処理})で指定します。

事例

■50%拡大から縮小して表示し、50%拡大し非表示します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect09' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target09' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target09').css('display','none');
		$('.efect09').click(function(){
			$('.efect_target09').toggle('puff' , 1000 );
		});
	});
</script>

■10~12行目

パフ効果でトグルしています。トグル時間は1秒

⑩bounce効果

バウンス(バウンドさせる)効果で要素をトグルします。一覧リストに戻る

オプション名 説明
distance バウンドの最大値をピクセル単位で指定します。

初期値:20

times バウンド回数を指定します。

初期値:5

■指定方法は('bounce',{distance:値,times:値},アニメ時間,function(){アニメ後の処理})で指定します。

事例

■要素をバウンドさせながら開閉します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect10' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target10' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target10').css('display','none');
		$('.efect10').click(function(){
			$('.efect_target10').toggle('bounce' , 1000 );
		});
	});
</script>

■10~12行目

バウンス効果でトグルしています。トグル時間は1秒

⑪explode効果

エクスブロウド(要素を分割して爆破させる)効果で要素をトグルします。一覧リストに戻る

オプション名 説明
pieces 分割する個数を指定します

初期値:9(3×3)

取れる値は 4,9,16,25 の値です。

■指定方法は('explode',{pieces:値},アニメ時間,function(){アニメ後の処理})で指定します。

事例

■9分割から集めて表示し、9分割に分解して非表示する。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect11' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target11' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target11').css('display','none');
		$('.efect11').click(function(){
			$('.efect_target11').toggle('explode' , 1000 );
		});
	});
</script>

■10~12行目

エクスブロウド効果でトグルしています。トグル時間は1秒

⑫pulsate効果

パルセイト(要素を点滅させる)効果で要素をトグルします。一覧リストに戻る

オプション名 説明
times 点滅させる回数

初期値:5

■指定方法は('pulsate',{times:値},アニメ時間,function(){アニメ後の処理})で指定します。

事例

■要素を点滅させながら開閉します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect12' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target12' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target12').css('display','none');
		$('.efect12').click(function(){
			$('.efect_target12').toggle('pulsate' , 1000 );
		});
	});
</script>

■10~12行目

パルセイト効果でトグルしています。トグル時間は1秒

⑬shake効果

シェイク(要素をシェイクする)効果で要素をトグルします。一覧リストに戻る

オプション名 説明
direction 要素を始めに振る方向

初期値:'left'

上記以外に 'right' , 'up' , 'down' が選択可

distance 振り幅

初期値:20

times 振る回数

初期値:3

■指定方法は('shake',{direction:値,distance:値,times:値,},アニメ時間,function(){アニメ後の処理})で指定します。

事例

■左右に振動して開閉します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect13' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target13' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target13').css('display','none');
		$('.efect13').click(function(){
			$('.efect_target13').toggle('shake' , 1000 );
		});
	});
</script>

■10~12行目

シェイク効果でトグルしています。トグル時間は1秒

⑭highlight効果

ハイライト(背景色を変更する)効果で要素をトグルします。一覧リストに戻る

オプション名 説明
color 背景色

初期値:'#ffff99' (クリアな黄)

■指定方法は('highlight',{color:値},アニメ時間,function(){アニメ後の処理})で指定します。

事例

■背景色を黄色にした後、開閉します。

エフェクトエリア
ここが表示/非表示します

上記のプログラムは下記から構成されています。

<p>
	<button class='efect14' style='padding:5px 10px;background:cyan'>トグルによる開閉</button>
</p>
<div class='efect_target14' style='width:200px; height:100px;background:pink;'>
	<div style=' padding:10px;'>エフェクトエリア<br>ここが表示/非表示します</div>
</div>
<script>
	$(function(){
		$('.efect_target14').css('display','none');
		$('.efect14').click(function(){
			$('.efect_target14').toggle('highlight' , 1000 );
		});
	});
</script>

■10~12行目

ハイライト効果でトグルしています。トグル時間は1秒

 


参考情報

①トグルに合わせてセレクト要素を変更する場合は .toggleClass() を参照してください。

これを利用すると、開閉前の図形と開閉後の図形を変更する事ができます。

 


関数一覧
  • 1.JavaScript/jQueryとは
  • 2.[JS] 変数規則と文字連結
  • 3.[JS] if文
  • 4.[JS] 配列操作
  • 5.[JS] 文字列操作
  • 6.[JS] 画面情報&操作
  • 7.[JS] Timer処理
  • console.log()
  • for
  • for in
  • for of
  • indexOf()
  • join()
  • length
  • map()
  • match()
  • Object.keys()
  • Object.values()
  • parseInt()
  • pop()
  • push()
  • replace()
  • shift()
  • slice()
  • split()
  • toString()
  • unshift()
  • 1.jQueryの導入と記述の基本
  • 2.jQueryの機能追加
  • 3.jQuery文法
  • 4.階層構造の要素セレクトと操作
  • 5.要素サイズ取得メソッド
  • animate()
  • append()
  • attr()
  • change(func)
  • click()
  • click(func)
  • css()
  • each(func)
  • effect()
  • empty()
  • fadeTo()
  • get()
  • hover(f1,f2)
  • html()
  • map(func)
  • mousedown(func)
  • prop()
  • resize(func)
  • show()、hide()
  • slideToggle()
  • submit()
  • submit(func)
  • text()
  • toggle()
  • toggleClass()
  • val()