2011-07-26 2 views
0

jqueryを使って基本的なドロップダウンメニューを作成しようとしています。ユーザーがマウスを動かすと、divがその下にスライドします。ここでのコードは、私がこれまで持っている:基本的なJqueryメニューをゼロからドロップ

<script> 

$('.rentals-link').mouseenter(function() { 
    $('.region-drop-down-menu').slideDown(); 
}); 

$('.region-drop-down-menu').hover(function() { 
    $('.region-drop-down-menu').slideDown(); 
}); 

$('.region-drop-down-menu').mouseleave(function() { 
    $('.region-drop-down-menu').slideUp(); 
}); 


</script> 
コードの問題はしかし、私はマウスがボタン領域を離れるときのdivスライドアップを作成する方法を見つけ出すことはできませんし、また、それは時に上にスライドしているということです

divエリアを離れる。助言がありますか?

答えて

0

たぶんので、両方の要素がマウスポインタが閉じる前に、他の1の内側にあるかどうかを確認

<div class="dropdown-menu-toggle">Toggle</div> 
<div class="dropdown-menu-content">...</div> 

var isInDropDown = false, isInToggle = false; 
$('.dropdown-menu-toggle').mouseenter(function() { 
    $('.dropdown-menu-content').slideDown(); 
    isInToggle = true; 
}).mouseleave(function() { 
    setTimeout(function() { 
     if(! isInDropDown) { 
      $('.dropdown-menu-content').slideUp(); 
     } 
    }, 1000); 
    isInToggle = false; 
}); 
$('.dropdown-menu-content').mouseenter(function() { 
    $('.dropdown-menu-content').slideDown(); 
    isInDropDown = true; 
}).mouseleave(function() { 
    setTimeout(function() { 
     if(! isInToggle) { 
      $('.dropdown-menu-content').slideUp(); 
     } 
    }, 1000); 
    isInDropDown = false; 
}); 

を行います。また、これにより、ユーザはカーソルを移動させる時間(1秒)を得ることができる。私のjsfiddleのフォーク:http://jsfiddle.net/zkRq2/

+0

トグルトリガーとドロップダウンメニューの内容を同じdivにラップすることはできません。私はできることを望むが、それは私が働いているものでは選択肢ではない。 – zach

+0

@ zach:それに応じて更新されました。 – marc

+0

それはうまくいくようです。 – zach

0

通常、メインのdiv内にドロップダウンメニューを配置すると、メインのdivの一部になります。あなたがメインのdivにmouseleaveを持っているとき、それはドロップダウンを含みます。

+0

これは私が取り組んでいるものではありません。 – zach

+0

多分、あなたが働いているものを投稿することができます。 –

+0

これは私が取り組んでいることです:http://jsfiddle.net/vjWPP/ – zach

関連する問題