2

私は持っている:

<img id="leftBubble" class="bubbles" src="left.png" />
<img id="rightBubble" class="bubbles" src="right.png" />

そして、次のようなホバーイベント:

$(".bubbles").each(function(){
    $(this).hover(function() { 
        pause($(this));
    }, function() {
        play(4000, $(this));
    });
});

pause() 関数が機能していないようです

function pause(pauseMe) {
    if (pauseMe == $("#leftBubble")) {
        clearTimeout(timer1);                        //this is never reached
    } else if (pauseMe == $("#rightBubble")) {
        clearTimeout(timer2);                        //nor this
    }
}

一時停止機能のパラメーターとしてホバー イベントに $this を渡す方法はありますか?

4

4 に答える 4

4

を呼び出すたびに$、結果の内容が同じであっても、異なる結果セット オブジェクトが返されます。あなたがしなければならないチェックは次のとおりです。

if (pauseMe.is("#leftBubble")) {
于 2012-04-17T20:41:41.547 に答える
4

以下のようにしてみてください、

function pause(pauseMe) {
    if (pauseMe == "leftBubble") {
        clearTimeout(timer1);
    } else if (pauseMe == "rightBubble") {
        clearTimeout(timer2);
    }
}

そして呼び出し元で、

$(".bubbles").each(function(){
  $(this).hover(function() { 
    pause(this.id);
  }, function() {
    play(4000, $(this));
  });
});
于 2012-04-17T20:47:13.797 に答える
0

JavaScript ではthis、新しい関数定義を入力するたびに再定義されます。外部 にアクセスしたい場合はthis、それへの参照を変数に保持する必要があります (私は を使用しましたself) 変数。

$(".bubbles").each(function(){
    var self = this;
    $(this).hover(function() { 
        pause($(self));
    }, function() {
        play(4000, $(self));
    });
});

ただし、jQuery オブジェクト間の比較が機能するかどうかはわかりません。おそらく、DOM 要素を比較することができます: pauseMe[0] == $("#leftBubble")[0]、または前述のように ids.

于 2012-04-17T20:42:00.110 に答える
0

呼び出すと、前回$( ... )呼び出したときに生成されたものとは異なる新しいオブジェクトが、同じパラメーターで生成されます。$( ... )

==とにかく、オブジェクトをJavaScript で比較することはできません。true同じオブジェクトを気に入った場合にのみ返されます。

a = {b:1}
c = {b:1}
d = c

a == b // false
d == c // true
于 2012-04-17T20:48:10.220 に答える