2011-02-02 9 views
0

私は実際にうまく動作するドロップダウンメニューを持っていますが、ユーザがボックスから外に出てから500msの間話すためにはドロップダウン状態にしておきたいと思います。jquery delay()アニメーションを破る

.delay(500)を使用しようとしましたが、アニメーションが詰まってメニューが消えないようです。

ここに私のコードです。

$(function(){ 
$("ul.dropdown li ul").hide(0); 
$("ul.dropdown li").hover(function(){ 
    $(this).addClass("hover"); 
    $('ul:first',this).show(0); 
}, function(){ 
    $(this).removeClass("hover"); 
    $('ul:first',this).delay(500).hide(0); 
}); 
$("ul.dropdown li ul li:has(ul)").find("a:first").append("»"); 

});

答えて

3

この遅延はsetTimeoutと同じように使用しています。あなたがやっていることについては、setTimeoutを使うことをお勧めします。

ところで、あなたはそれを戻したいと思うかもしれないので、あなたは500ミリ秒後にそれを隠していますか?はいの場合、隠れ機能をキャンセルするには、ユーザーがそれに戻ると考える必要があります。チームメイトの

$(function(){ 
var myTimeout = null; 
$("ul.dropdown li ul").hide(0); 
$("ul.dropdown li").hover(function(){ 
    if (myTimeout) clearTimeout(myTimeout); 
    $(this).addClass("hover"); 
    $('ul:first',this).show(0); 
}, function(){ 
    var _thisRef = $(this); 
    _thisRef.removeClass("hover"); 
    myTimeout = setTimeout(function() { 
     _thisRef.find("ul:first").hide(); 
    }, 500); 
}); 

$("ul.dropdown li ul li:has(ul)").find("a:first").append("»"); 
}); 
+0

スポット:このために、あなたに

var myTimeOut = setTimeout(function, 500); clearTimeout(myTimeOut); 

私の完全な提案を使用したsetTimeoutを覚えています。私はtimeOutをキャンセルすることを考えなかった。それは本当に非常にイライラするでしょう。 乾杯。 – Sam

+0

答えがあなたを助けましたか?はいの場合は、回答としてマークすることができます。 – Luke

+0

ええ、私はそれをマークするためにそれを待たなければなりませんでした。 2分遅れか何か。 – Sam