2009-07-09 2 views
5

基本的には、ホバーを使用してアイテムを表示または非表示にする際にいくつか問題があります。jQueryスライドでスライドを隠す/表示する...これを行うにはより良い方法ですか?

アイデアはシンプルで、ホバリングでdivを表示します。もはやホバリングしないときは、それを隠す。問題は、マウスがdivの上を飛び越えすぎてすぐに離れると、表示/非表示のdivが表示されたままになることです。私はこれが簡単に救済され、ホバーイベントの典型的な問題ではないことを望んでいます。

jQuery 
(
    function() 
    { 
    jQuery(".slideDiv").hide(); 

    jQuery(".mainDiv").hover 
    (
     function() 
     { 
     var children = jQuery(this).children(".slideDiv"); 

     if (children.is(":hidden")) 
     { 
      children.show("slide", { direction: "left" }, 100); 
     } 
     }, 
     function() 
     { 
      var children = jQuery(this).children(".slideDiv"); 
      children.hide("slide", { direction: "left" }, 100); 
     } 
    ); 
    } 
); 

スタイルは、次のようになります。

.mainDiv 
{ 
    margin:5px; 
    height:200px; 
} 

.slideDiv 
{ 
    background-color:Teal; 
    float:left; 
    height:200px; 
    position:absolute; 
    z-index:100; 
} 

そして

<div class="mainDiv"> 
     <div class="showDiv"> 
      Hover me 
     </div> 
     <div class="slideDiv"> 
      Do you see me? 
     </div> 
    </div> 
    <div class="clear"></div> 
    <div class="mainDiv"> 
     <div class="showDiv"> 
      Hover me too 
     </div> 
     <div class="slideDiv"> 
      Do you see me now? 
     </div> 
    </div> 

答えて

13

hoverIntentプラグインを使用するマークアップ。これにより、ユーザが要素の上にマウスを単に渡して見苦しいアニメーションの連鎖を回避するだけで、何かが表示されるのを避けることができます。

+0

+1 - それは私の提案でした。グレートプラグイン。 – karim79

+1

+1私はhoverIntentプラグインに私を公開するため、これは私がここに来てjQueryスレッドをブラウズする理由です。私は非常に多くのクールなトリックを拾う。 –

+0

これはすばらしく、このプラグインを使用します! – mattt

6

私はあなたのスクリプトを試して、あなたが説明したようにしました。私はあなたのスクリプトからchildren.is( ":hidden")を削除しようとしましたが、問題はまだ発生しました。

スクリプトを書き直すと、divスクリプトは表示されません。意図

jQuery (
    function(){ 
    jQuery(".slideDiv").hide(); 
    jQuery(".mainDiv").hover (
     function() { 
     $(this).children(".slideDiv").show("slide", { direction: "left" }, 100); 
     },function(){ 
     $(this).children(".slideDiv").hide("slide", { direction: "left" }, 100); 
     } 
    ); 
    } 
); 

作品として:

$(document).ready(function(){ 
    $('.slideDiv').hide(); 
    $('.mainDiv').hover(
    function(){ 
     $(this).find('.slideDiv').show('slide', { direction: 'left' }, 100) 
    }, 
    function(){ 
     $(this).find('.slideDiv').hide('slide', { direction: 'left' }, 100) 
    } 
    ) 
}) 

はまだ問題を抱えている:だから、問題は、オブジェクトを取得するを見つけるjQueryの子供代わりのを使用していることが表示されます

はい、hoverIntentプラグインはいいです:P

関連する問題