質問: 先日も同じ内容の質問をしているにもかかわらず、似たような質問を繰り返してしまい恐縮ですが、廃止されたtoggleメソッドと現存するtoggleメソッドについて再びわからなくなってしまいましたので質問させていただきます。 前回の質問から、現存するtoggleメソッドはhideメソッドとshowメソッドの2つをあわせてそのような呼び方をしているのだと理解していました。しかし、こちらには.toggle()というようにそのままtoggleメソッドを呼び出している(つまりhideかshowかを指定していない)コードがのせられていました。もし古いバージョンのjQueryを利用していて廃止されているtoggleメソッドと現存するtoggleメソッドがでてきてしまったときに混乱してしまうので、この2つのメソッドの違いをもう一度ご教授していただけませんでしょうか? ごぞんs
回答: 廃止された方の`.toggle()`では、引数は`(handler, handler2, [handler3])`となっていて、2つもしくは3つとも**関数**です。 そして、現存する方の`.toggle()`には、いくつもの引数の与え方があります。 * 切り替わるまでの時間と、切り替わり時に動くコールバックの少なくともどちらかを指定する `([duration] [, complete])` * パラメーターをまとめてオブジェクトで渡す `(options)` * トランジションの動きを指定する `( duration [, easing ] [, complete ] )` * 表示するか消すか指定する `(display)` 角カッコ内の引数は省略できるので、1つも渡さなかったときは`([duration] [, complete])`とみなされて、「今の状態から400ミリ秒かけて、反対の状態になる」...となりそうな気がするのですが、ソースコーを読んで確認してみると、引数なしの場合は**即座に切り替わります**。ドキュメントから`.toggle(/* 引数なし */)`のパターンが抜けているみたいです。 なにはともあれ、JavaScriptでこのような「引数のパターンがいくつもある」関数を作ると、使う側も作る側もややこしいので、自分で作ることはあまりおすすめできません。