質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

9347閲覧

廃止されたtoggleメソッドともうひとつのtoggleメソッドについて。

dddd_gond

総合スコア38

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/02/03 18:48

先日も同じ内容の質問をしているにもかかわらず、似たような質問を繰り返してしまい恐縮ですが、廃止されたtoggleメソッドと現存するtoggleメソッドについて再びわからなくなってしまいましたので質問させていただきます。
前回の質問から、現存するtoggleメソッドはhideメソッドとshowメソッドの2つをあわせてそのような呼び方をしているのだと理解していました。しかし、こちらには.toggle()というようにそのままtoggleメソッドを呼び出している(つまりhideかshowかを指定していない)コードがのせられていました。もし古いバージョンのjQueryを利用していて廃止されているtoggleメソッドと現存するtoggleメソッドがでてきてしまったときに混乱してしまうので、この2つのメソッドの違いをもう一度ご教授していただけませんでしょうか?
ご存知の方がいましたらよろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

廃止された方の.toggle()では、引数は(handler, handler2, [handler3])となっていて、2つもしくは3つとも関数です。

そして、現存する方の.toggle()には、いくつもの引数の与え方があります。

  • 切り替わるまでの時間と、切り替わり時に動くコールバックの少なくともどちらかを指定する ([duration] [, complete])
  • パラメーターをまとめてオブジェクトで渡す (options)
  • トランジションの動きを指定する ( duration [, easing ] [, complete ] )
  • 表示するか消すか指定する (display)

角カッコ内の引数は省略できるので、1つも渡さなかったときは([duration] [, complete])とみなされて、「今の状態から400ミリ秒かけて、反対の状態になる」…となりそうな気がするのですが、ソースコーを読んで確認してみると、引数なしの場合は即座に切り替わります。ドキュメントから.toggle(/* 引数なし */)のパターンが抜けているみたいです。

なにはともあれ、JavaScriptでこのような「引数のパターンがいくつもある」関数を作ると、使う側も作る側もややこしいので、自分で作ることはあまりおすすめできません。

投稿2017/02/03 23:01

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1.8.3と1.4.5で下記のコードを実行すればわかりやすいのではないでしょうか
1.8.3だと両方OK
1.4.5だと...消える

html

1 <button id="T1">T1</button><br> 2 <button id="T2">T2</button> 3 <div id="D1" style="border:1px solid black;width:100px;height:50px;display:none"></div>

Javascript

1 <script type="text/javascript"> 2 //<!-- 3 $(function(){ 4 $("#T1").click(function(){ 5 $("#D1").toggle(); 6 }); 7 $("#T2").toggle( 8 function(){ 9 $("#D1").slideDown("fast"); 10 }, 11 function(){ 12 $("#D1").slideUp("slow"); 13 } 14 ); 15 }); 16 //--> 17 </script>

投稿2017/02/03 23:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問