2

下にスクロールすると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);
  }
  });
4

2 に答える 2

0

これを試して:

var addClass = function() {
    $(".div").addClass("MyClass");
}

var removeClass = function() {
    $(".div").removeClass("MyClass");
}

if (scroll >= hh1-90 && scroll < hh3-90 || scroll >= hh5-90 && scroll < hh6-90)
  {
      setTimeout( myClass,3440);
  }
  else 
  {
      setTimeout(removeClass,3440);
  }
于 2013-09-15T23:54:50.410 に答える