2016-04-25 5 views
0

私は動的に読み込まれるコンテンツを持っています。このコンテンツは、動的な性質のため、次のように呼び出す必要があります。ホバー機能内でタイムアウトを設定する

setTimeoutを使用しない場合は、これは完全に機能します。このインスタンスでは0.25秒のタイムアウトを設定する方法はありますか?

Fiddle https://jsfiddle.net/vuezt9dh/

作品

$(".wrapper").on({ 
    mouseenter: function() { 
    $(this).find('.show-me').slideDown(150); 
    }, 
    mouseleave: function() { 
    $(this).find('.show-me').slideUp(0); 
    } 
}, '.main-page'); 

はあなたのターゲティングが不正確である

$(".wrapper").on({ 
    mouseenter: function() { 
    var $this = $(this); 
    setTimeout(function() { 
     $this.find('.show-me').slideDown(150); 
    }, 250); 
    }, 
    mouseleave: function() { 
    $(this).find('.show-me').slideUp(0); 
    } 
}, '.main-page'); 
+0

'$ this 'を' $(this) 'に代入しないとどうなりますか? –

+0

動的要素とタイムアウトとの間の関連性は、slideDownアクションを遅らせるように見え、 '$ this.find( 'show-me')。delay(250).slideDown(150) ;それは? – adeneo

+0

FWIWあなたが言うことは、あなたの作品には何もしません。 –

答えて

1

、私はこれがすべてで働いて驚いています動作しません(私のテストではなかった)

デモhttps://jsfiddle.net/vuezt9dh/2/

は次のようになります。

$(".main-page").on({ 
    mouseenter: function() { 
    var $this = $(this); 
    setTimeout(function() { 
     $this.find('.show-me').slideDown(150); 
    }, 550); 
    }, 
    mouseleave: function() { 
    $(this).find('.show-me').slideUp(0); 
    } 
}, '.wrapper'); 

あなたwrappermain-page周りに間違った方法でした。

+1

'mouseleave'でタイムアウトをクリアするのが理想です。そうしないと、速いホバーとアウトが表示されます –