2016-12-06 6 views
0

私がすべきMouseEnterイベントに開始され、いくつかのスライダーを作成するには、この簡単なスクリプトを使用しています間の変数の配信は、mouseLeaveに停止します。二つの機能

$(".grid-item").mouseenter(function() { 

    var slides = $(this).find(".slide-image"), 
     counter = 0; 

    var test = setInterval(function(){ 
    slides.removeClass('active'); 
    slides.eq(counter).addClass('active'); 
    counter++; 

    if (counter > slides.length) {counter = 0;}; 
    }, 600); 

}).mouseleave(function() { 

    clearInterval(test); 
    // $(".slide-image").removeClass('active'); 

}); 

はスライダーはかなり細かい起動しますが、mouseleave-イベントにIコンソールエラーが発生しました"未知のReferenceError:テストが定義されていません"。インターバルの変数が2番目の関数に渡されないので、私はそれを考える。解決策はありますか?

Check out my CodePen!

+1

は 'test'外のイベントハンドラを定義関数の外であなたの変数testを宣言します(これは、ここでは正常に動作します) – Satpal

答えて

1

var test; 
$(".grid-item").mouseenter(function() { 

    var slides = $(this).find(".slide-image"), 
     counter = 0; 

    test = setInterval(function(){ 
    slides.removeClass('active'); 
    slides.eq(counter).addClass('active'); 
    counter++; 

    if (counter > slides.length) {counter = 0;}; 
    }, 600); 

}).mouseleave(function() { 

    clearInterval(test); 
    // $(".slide-image").removeClass('active'); 

}); 
関連する問題