4

私はjQueryナビゲーションメニューをいじっていましたが、例のためにモックアップを作成しました: http://jsfiddle.net/DerFlatulator6/3jYhh/1/

私が望んでいたのとは正反対のことをするという問題がありました。ホバー イベントのコードは次のようになりました。

$(this)
    .addClass('selected')
    .children('ul')
        .animate({'height': 'toggle'}, 300);

いろいろ悩んだ結果、これにたどり着きました

$(this)
    .addClass('selected')
    .children('ul')
        .css('height', 'toggle')
        .animate({'height': 'toggle'}, 300);

これは機能しますが、理由がわかりません!何が起こっているのか正確に説明できる人はいますか?

副次的な質問...フィドルには3レベルのメニューがあり、コードは垂直方向と水平方向のドロップダウン用に分離されていることに気付くでしょう。それらの両方をカバーする関数を書く良い方法はありますか?それともそのままにしておくべきですか?そのまま?

4

1 に答える 1

2

animate({'height': 'toggle'}, 300)高さが0より大きい場合は、現在から0までの高さをアニメートするか、現在が0の場合は0から前までの高さをアニメートするようなものです。

ドキュメントからhttp://api.jquery.com/animate/

数値に加えて、各プロパティは文字列'show'、'hide'、および'toggle'を取ることができます。これらのショートカットを使用すると、要素の表示タイプを考慮したアニメーションのカスタム非表示および表示が可能になります。

于 2012-04-30T16:11:57.080 に答える