0

簡単だと思ったことをやろうとしていますが、助けが必要です。

jquery関数内でタイマーを設定し、別の関数からクリアしたい....

(function($){

var mnuTimer;
var mnuDown;

$('.nav-menu .parent').hover(function(){
    clearTimeout(mnuTimer);//clear function
    $(this).children('.children').slideDown();
    $(this).css('background-color','#fff0c8');
},
function(){
    function mnuDown(){//set function for timer experation
      $(this).children('.children').slideUp('fast');
      $(this).css('background-color','transparent');
      }
    mnuTimer = setTimeout("mnuDown()",1000)//timer
});

})(jQuery);

だから私が働けない唯一の部分はタイマーです。「mnuDown」関数は未定義になります。私はそれを機能させるためにさまざまな方法を試しましたが、jqueryの外で関数を宣言することを除いて何も正しくないようです "(function($){". jqueryを使用している全体の理由はjquery 以外では利用できない SlideUp アニメーションを適用します。AHHH ヘルプ、ありがとう

4

1 に答える 1

2

この答えを繰り返すだけです:

はい、関数の宣言ではなく、それを参照する [変数] が問題です。何もありません。代わりに、そのコード文字列をグローバル スコープでsetTimeout("mnuDown()",1000)評価します -そこには見つかりません。関数参照を に渡す必要があります。mnuDownsetTimout()

mnuTimer = setTimeout(mnuDown,1000); //timer
于 2012-05-31T00:08:12.257 に答える