インラインJavascriptがロードされている既存のメニューシステムを、jQueryのみを使用して新しいより効率的なコードに変換しようとしています。
ロールオーバー画像のある横棒があります。ページに整数値を含む非表示フィールドがあります。ページが読み込まれると、対応するメニューに「スティッキー」バージョンの画像が読み込まれ、他のすべてのメニュー項目はマウスのEnterとLeaveで画像を交換します。大量のインラインJavascriptと、新しいサイトを作成するたびに変換するのが面倒なモンスターJavascriptファイルがロードされていました。
これをすべてjQueryに正常に変換し、スティッキーメニュー項目のクリックを無効にすることもできました。これで、いくつかの変数を設定するだけで、各サイトのデザインごとに簡単にカスタマイズできます。
うまく機能しています...
今、新しい問題が発生します。1つのデザインには、各メニュー画像の下に多数のスライド式引き出しが含まれています。スライドアニメーションは外部JSファイルによって処理され、メニュードロワー自体はそれぞれコンテナDIV内にネストされたコンテンツを含む単なるDIVです。
そこで、DIVをアニメーション化し、メニュー画像のマウスホバーでスライドインおよびスライドアウトするjQuery用の簡単なものをいくつか作成しました。
問題は、ドロワーを閉じないと、マウスがメニュー画像から離れてメニュードロワーに移動するという問題を解決できないように見えることです。「なぜ?」を理解しています...中に入る前に、アニメーションをトリガーして引き出しを閉じる画像を残しています。ホバーアニメーションをドロワーコンテナに適用すると、メニューの下にゾーンが作成され、アニメーションもトリガーされます。これも必要ありません。jQueryではより複雑な問題になっているようです。これはすべてインラインJavascriptで正常に機能していました...画像を閉じる機能をトリガーせずに、画像から隣接する開いている引き出しにマウスを移動するだけで済みました...引き出しのインライン「マウス入力」がキャンセルされたかのように画像の「マウスリーブ」。
助言がありますか?
ありがとうございました!
編集:
画像からドロワーに渡すときに.stop(true、false)を使用してこれを解決したと思います。これにより、アニメーションが開始する前に停止します。次に、通常のアニメーションを開始する前に画像を入力する場合も同じです...これは、ドロワーを離れて画像を入力することによってトリガーされるアニメーションを停止する効果がありますが、画像を通常どおりに入力する場合も何もしません。さらにテストしてから、サンプルコードを投稿します。
編集#2:
「stop()」と「delay()」を使用してアニメーションを制御していますが、マウスを開くよりも速くマウスを入れることができれば、引き出しの開きをフリーズすることができます。150ミリ秒でインストールされます。しかし、今は問題を誇張するために300ミリ秒に設定しています。
ここに投稿された関連コード...
jsfiddle.net/qPLVp/8/
編集#3:
ニールのおかげで、これは現在非常にうまく機能しています。アニメーションの速度が速くなると、マウスがメニュー画像をオーバーシュートしてドロワーに入る状態が最小限に抑えられます。しかし、それが起こった場合、引き出しは閉じません。これは、マウスの下から閉じるよりもはるかに優れています。
http://jsfiddle.net/elusien/PayFw/8/
編集#4:
再びニールのおかげで、これは同じコードのより効率的なバージョンです...