2012-02-07 8 views
0

スライドショーを表示するオブジェクトを定義しました。次に、レンダリングメソッドの単純化バージョンを示します。JQuery:マウスオーバーでアニメーションループを停止するにはどうすればいいですか? (オブジェクト指向)

私の問題は、startLoopメソッドで実行されているすべてのアニメーションを停止したいということです。しかし、私はそれを理解していない。

// Render display 
this.render = function() { 

    ... 
    MAKE HTML WITH SLIDESHOW 
    ... 

    // Start the loop 
    this.startLoop(); 

    // Stop on hover 
    $('#display' + this.id).hover(function() { 
     this.animate.stop(); // Doesn't work 
    }, function() { 
     // Here should continue the animation 
    }); 

} 

// Loop Slides 
this.startLoop = function() { 
    ... 
    ANIMATIONS HERE 
    ... 
} 

ありがとうございました。

+0

コードを簡略化しました。 'startLoop'には何がありますか? –

答えて

1

私はついに答えました。あなたが呼び出している関数の範囲と関係しているので、$.proxyを使うべきです。

// Stop on hover 
$('#display' + this.id).hover($.proxy(this, 'stopAnimation')); 
$.proxy内部 thisはスコープ(私のオブジェクト)で

stopAnimationがオブジェクトからメソッドです:

機能More information here.は次のように変更されました。

これは誰かを助けてくれることを願っています。ありがとう。

+0

将来的に人々を導くための答えを受け入れることを忘れないでください。 –

2

.hoverコールバック関数で「この」参照HTML要素ではなくjQueryオブジェクトは、あなたが「この」のためのjQueryオブジェクトを取得する必要があり、それは$(この)である必要があり、以下のショーとして:

// Stop on hover 
    $('#display' + this.id).hover(function() { 
     $(this).animate.stop(); // Doesn't work 
    }, function() { 
     // Here should continue the animation 
    }); 
+0

こんにちは、私はそれを試みましたが、私はマウスをかぶったとき、私のJavaScriptコンソールで次のエラーが表示されます。Uncaught TypeError:オブジェクト関数(​​a、b、c、d){function g(){e.queue = ==!1 && f._mark(this); var b = f.extend({}、e)、c = this.nodeType === 1、d = c && f(this)......... – Xonox

+0

そして私がこれを追加した場合:alert($(this).id); hover関数の中で、私は "undefined"を取得します。つまり、関数内で自分のオブジェクトに到達できません。 – Xonox

+0

あなたはアラートのために何を得ますか(これ);アラート($(this))のために。 ? –

関連する問題