2011-07-13 7 views
0

jadeがフェードインする単純なイメージスワッピング機能を実装しています。内部関数が終了するまで、次のmouseoverイベントの起動を停止します。

$('#thumbs img').mouseover(function(){ 
// code to swap images here 
}); 

マウスをすばやく動かすと、マウスオーバーが発生し続け、イメージをスワップするコードが継続します。 $( '#thumbs img')のmouseoverイベントが、内部コードが実行されるまで、起動するのを止めるにはどうすればよいですか?

答えて

0

あなたは処理しながら、evantハンドラを削除することができます。

$('#thumbs img').mouseover(dostuff); 

function dostuff() 
{ 
    $(this).unbind('mouseover', dostuff); 
    // code to swap images here 
    $(this).mouseover(dostuff); 
} 

(そのような何か - 私は気圧それをテストすることはできません)。あなたがやっていることは、処理中のイベントハンドラを削除し、完了したら再バインドすることです。

+0

私は以前にこれを行ってきたように私は考えて再帰的に 'doStuff'を呼び出すには、ループ無限 – Rafay

+0

私は、適切に実装されていればそれがないとは思わないだろう。実際にはdostuffを呼ぶのは、イベントがtriggeresであっても、dostuff自体からではなく、再帰的ではないからです。 –

4
$('#thumbs img').mouseover(function(){ 
    if(!moving){ 
    moving = true; 
    // code to swap images here 
    if(complete) // some test to see if image swap has finished 
     moving = false; 
    } 
}); 
関連する問題