延迟弄乱班级(如果不是)

时间:2013-11-19 15:30:19

标签: javascript jquery html css

我坚持使用以下代码:

 $(window).scroll(function () {
     if ($(window).scrollTop() > 5) {

         $("#logomenu").delay(750).queue(function () {
             $("#logomenu").toggleClass("logofrontgo", true);
             $("#logomenu").dequeue();
         });
     } else {
         $("#logomenu").toggleClass("logofrontgo", false);
     }

我满足IF条件时需要延迟,但我不需要它在ELSE中。但是......当代码进入" ELSE"时,有时它按顺序执行IF条件,我认为是因为IF在执行else之前就满足了,然后,当他进入ELSE,它在延迟(750ms)之后执行IF条件,然后evertyhing brokes ..

任何帮助?谢谢!

1 个答案:

答案 0 :(得分:1)

似乎只是使用超时更容易,并使用开关切换延迟和类:

$(window).on('scroll', function(){
   var _switch = $(window).scrollTop() > 5;

   clearTimeout( $(this).data('timer') );

   $(this).data('timer', 
       setTimeout(function() {
           $("#logomenu").toggleClass( "logofrontgo", _switch );
       }, _switch ?  750 : 0)
   );
});