2011-12-30 7 views
3

複数のチラシをクリックすると、4秒後に表示されるヘルプテキストオーバーレイが表示されます。ヘルプテキストを表示することはできますが、タイムアウトは機能しません。いくつかのオブジェクトのタイムアウトを設定しました

$(".flyercontainer").click(function(){ 
    $(this).children('.flyerHelp').css('opacity',0.8); 
    setTimeout(function(){ 
     $(this).children('.flyerHelp').css('opacity',0); 
    },4000); 
}) 

ご協力いただきありがとうございます。

答えて

6

setTimeOut()のコールバックのthisは、グローバルオブジェクトであるwindowを指しているとは限りません。 window.setTimeout()メソッドのコールバック関数の範囲で使用される場合

$(".flyercontainer").click(function(){ 
    var children = $(this).children('.flyerHelp'); 
    children.css('opacity',0.8); 
    setTimeout(function(){ 
     children.css('opacity',0); 
    },4000); 
}); 
+0

速い手はupvoteに値します:) – Pavan

+0

@JQone:明らかにそれは下垂体にも値するでしょう。 – alex

+0

あなたの元の投稿は答えではなかったので、私はダウン投票しました。あなたが書いたのは、「これはあなたの機能にあるとは思わない」ということです。あなたの投稿を編集したので、今すぐ投票を変更しました。 – Paulpro

0

上述したように、thiswindowオブジェクトを指します。 .flyercontainerclickハンドラーの範囲内で、setTimeout()の呼び出しの範囲外の変数をthisに設定すると、この問題を回避できます。

また、jQueryのdelay()メソッドを2つのゼロデュレーションアニメーションの間でチェーンして、オブジェクトの不透明度を変更しても同じ効果を得ることができます。 (デモ:http://jsfiddle.net/V2ZYy/