ywork2020.com

Title

キューを削除して離れる

目次 (INDEX)

dequeueとは

ここで説明する dequeue とは次の語句からなるjQueryのメソッドです。
dequeue
読み: デキュー
意味: キューから要素を取り出す操作の意。この場合、キューから離れるといった方が適切と思われる。

目次に戻る

dequeueメソッドの概要

このメソッドは、現在実行中のキュー、または引数に設定した名前のキュー から要素を取り出し、かつ削除し、かつ離れ、次のキューがあれば、それに実行を移します。

dequeue() は queue() メソッドで関数を実行した場合に、次のキューに実行を移す際に必要になります。

冒頭の部分を補足すると、これは、キューから要素 (アニメーションや関数) を取り出し、かつ離れるだけであり、アニメーションや関数の処理そのものが削除されるわけではありません。 つまり、キューだけが削除されるので、そのキューに登録されていた処理は、ユーザーから見ると、あたかも同時に処理されているように見えるかもしれません。 アニメーションを削除、停止、または完了したい場合は、 stop() を使用してください。

目次に戻る

構文

サンプルを見る前に構文を確認しておきます。

$(Selector).dequeue([queueName])
  • queueName: 省略可能な引数です。キューの名前を指定します。省略した場合には、デフォルト値の fx になります。

目次に戻る

サンプルコードと実行結果

ここでは animate()css() を キューに登録してみます。

animate() は CSS プロパティを変化させながら要素をアニメーションするためのメソッドです。 また、 css() は、CSS プロパティを設定するためのメソッドです。 これらのメソッドは CSS プロパティを操作しますが、アニメーションをするか、しないかの違いがあります。

概要のところでも述べているように、queue() の引数に animate() のようなアニメーションキューを発行するメソッドを指定した場合、キューの処理は連続的に移り進んでいきます。 しかし、アニメーションではない css() メソッドを関数の処理としてキューに追加した場合、 dequeue() を使って、そのキューを離れなければ、次のキューを実行することはできません。

サンプルコード: CSS
<style>
	#idParent{
		background-color: ##ivory;
		padding: 10px;
		height: 220px;
		width: 96%;
	}
	#idDiv{
		position: relative;
		left: 0;
		top: 0;
		background-color: ##lightgreen;
		border: thin solid ##lightgray;
		padding: 19px;
		height: 80px;
		width: 80px;
	}
</style>
サンプルコード: HTML
<head>
	<style>...</style>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
	<div id="idParent">
		<div id="idDiv"> Element </div>
	</div>
	<button id="idButton">run animation</button>
	<script>...</script>
</body>
  • 06-08: div id="idParent" (親要素です。)
  • 07: div id="idDiv" (子要素です。この要素がキューの実行によりアニメーションします。)
  • 09: button id="idButton" (アニメーションを開始する為のボタンです。)
サンプルコード: script
<script>
	let objOptions = new Object();
	objOptions.duration = 600;
	objOptions.easing = "swing";
	$("#idButton").click(function(){
		$("#idDiv").queue("myQueue", $("#idDiv").animate({"top":"100px"}, objOptions));
		$("#idDiv").queue(
			function(){
				$("#idDiv").css({"background-color":"##lightpink"}).dequeue();
			}
		);
		$("#idDiv").queue("myQueue", $("#idDiv").animate({"left":"300px"}, objOptions));
		$("#idDiv").queue("myQueue", $("#idDiv").animate({"left":"0px"}, objOptions));
		$("#idDiv").queue(
			function(){
				$("#idDiv").css({"background-color":"##lightgreen"}).dequeue();
			}
		);
		$("#idDiv").queue("myQueue", $("#idDiv").animate({"top":"0px"}, objOptions));
	});
</script>
  • 02: objOptions (アニメーションの設定をするために作成したオブジェクトです。詳しくは animate() のページを参照してください。)
  • 06: .animate({"top":"100px"}, objOptions) (キューの引数にアニメーションの実行を指定しています。詳しくは animate() のページを参照してください。)
  • 07-11: .queue(function(){関数の処理;}) (キューの引数に関数を指定しています。また関数の処理の最後には dequeue() を使ってキューを削除し次のキューに移行するようにしています。)
実行結果:
Element

目次に戻る