2012-02-07 10 views
2

私はJSコーダーではありません。私は物事を私が欲しいものにするのに十分だと知っていますが、最初からコード化することはできませんでした。私の問題は次のとおりです:ホバー上でタイマーを停止する

商品を追加すると、カートがユーザーの頭上にない限り、カートには4秒間表示されます。私はカーソルがその上にぶら下がっているときにタイムアウトを止めることができないようです。

$(document).ready(function() { 
    setTimeout(function() { $('#ctl00_ctl00_ctlHeader_divOrderProducts').hide(); }, 4000); 
}); 

答えて

2

あなたは変数にあなたのタイマーを設定する必要があります。

clearTimeout(timer1) 
+0

Diodeus、ご質問ありがとうございました!このコードはどこに置くのですか?再び、私はJSの男ではない。ロールオーバーを稼働させるには3日かかりました=) – THEDert

5

ストア変数でsetTimeout()の復帰、そしてclearTimeout()にそれを使用します:

var timer1 = setTimeout(function() { ... }) 

その後、使用

// t is a global scope variable. 
// Probably a good idea to use something better than 't' 
var t; 
$(document).ready(function() { 
    // Store the return of setTimeout() 
    t = setTimeout(function() { $('#ctl00_ctl00_ctlHeader_divOrderProducts').hide(); }, 4000); 
}); 

$('cart-selector').hover(function() { 
    if (t) { 
    // Call clearTimeout() on hover() 
    clearTimeout(t); 
    } 
}); 
+0

ありがとうございました!私はあなたの解決策を試みます! – THEDert

1

setTimeout()の戻り値を保存して、後でclearTimeout()と一緒に使用する必要があります。あなたはマウスが再びカートを離れたときにタイマーを再度有効にする場合、あなたはこのようにそれを行うことができます(#ctl00_ctl00_ctlHeader_divOrderProductsと仮定すると、カートがある)

$(document).ready(function() { 
    var hideTimer = setTimeout(function() { 
     $('#ctl00_ctl00_ctlHeader_divOrderProducts').hide(); 
    }, 4000); 
    $('#ctl00_ctl00_ctlHeader_divOrderProducts').hover(function() { 
     if (hideTimer) { 
      clearTimeout(hideTimer); 
      hideTimer = null; 
     } 
    }); 
}); 

:それへの一つの方法は、このようなものです

$(document).ready(function() { 
    var hideTimer; 

    function delayHideCart() { 
     if (!hideTimer) { 
      hideTimer = setTimeout(function() { 
       $('#ctl00_ctl00_ctlHeader_divOrderProducts').hide(); 
      }, 4000);   
     } 
    } 

    delayHideCart(); 
    $('#ctl00_ctl00_ctlHeader_divOrderProducts').hover(function() { 
     if (hideTimer) { 
      clearTimeout(hideTimer); 
      hideTimer = null; 
     } 
    }, function() { 
     delayHideCart(); 
    }); 
}); 
+0

私を助けてくれてありがとう! – THEDert

+1

@THEDert - あなたはここではかなり新しいので、あなたが助けてくれたすべての答えによって上向きの矢印をクリックすることによってあなたを助けた人に報酬を与えることになっていることを認識していますか?複数の答えで上矢印をクリックすることができます。そして、「最善の答え」を選択する質問をし、矢印の下のチェックマーク(左上または各回答)をクリックすることによってそれを示すことがあなたの責任です。チェックマークが緑色に変わり、これが選択した回答であることを示します。適切な手順に従うことで評判のポイントが得られ、回答者は手助けをして報酬を得るでしょう。 – jfriend00

+0

そうするには15人の担当者が必要です。私は試しています=) – THEDert

1

これはそれを行う必要があります。

$(document).ready(function() { 
    var timeout = setTimeout(function() { $('#ctl00_ctl00_ctlHeader_divOrderProducts').hide(); }, 4000); 
    $('#ctl00_ctl00_ctlHeader_divOrderProducts').mouseover(function() { 
     clearTimeout(timeout); 
    }); 
}); 

あなたが変数としてタイムアウトを保存して、あなたがカートをマウスオーバーし、そのタイムアウトを渡すときてclearTimeoutを呼び出します。

+0

私の記事に答える時間を取ってくれてありがとう – THEDert

0
var timer = window.setTimeout(function() { 
$('#ctl00_ctl00_ctlHeader_divOrderProducts').hide(); 
if(someCondition)clearTimeout(timer); 
} 
関連する問題