下にスクロールするとdivのクラスを変更する次のコードがあります。問題は、スクロールが非常に速い場合 (または、メニューに div へのリンクを配置した場合)、タイムアウト関数が最後の条件だけではなく、すべての条件をシーケンスとして実行することです。私がやりたいことは、関数がタイムアウト内にある間に状態が変化した場合、関数をスキップして次の状態をチェックすることです。
$(document).scroll(function() {
var about = jQuery('#hh1').position().top;
var portfolio = jQuery('#hh2').position().top;
var services = jQuery('#hh3').position().top;
var workingprocess = jQuery('#hh4').position().top;
var clients = jQuery('#hh5').position().top;
var blog = jQuery('#hh6').position().top;
var contact = jQuery('#hh7').position().top;
var scroll = $(this).scrollTop();
if (scroll >= hh1-90 && scroll < hh3-90 || scroll >= hh5-90 && scroll < hh6-90)
{setTimeout('$(".div").addClass("MyClass")',3440);}
else
{
setTimeout('$(".div").removeClass("MyClass")',3440);
}
});