2014-05-22 53 views
-1

我正在为弹出式窗口写一个小函数,并且我遇到了延迟(或setTimeout)问题。函数背后的想法是什么:你可以告诉哪个块需要被切换,并且在哪个时间之后它将从视图中消失。如果延迟设置为0,则不应用,它不会消失。下面是代码:Jquery .delay(或setTimeout)问题

function toggleModal(et, delayed) { 
     //detect whether popup is visible or not 
     if(et.hasClass('acc-edit-fn')) 
     { 
      //hidden - then display 
      //when IE - fade immediately 
      if($.browser.msie) 
       { 
       $('#opacity-modal').height($(document).height()).toggleClass('acc-edit-fn'); 
       } 
      else 
      //in all the rest browsers - fade slowly 
       { 
       $('#opacity-modal').height($(document).height()).toggleClass('acc-edit-fn').fadeTo('fast', 0.5); 
       } 

      et.html($(this).html()).toggleClass('acc-edit-fn'); 
      if(delayed > 0) {  
       setTimeout(et.toggleClass('acc-edit-fn'), delayed); 
       setTimeout(('#opacity-modal').toggleClass('acc-edit-fn').removeAttr('style'), delayed);   
      } 
     } 
     else 
     { 
     //visible - then hide 
     $('#opacity-modal').toggleClass('acc-edit-fn').removeAttr('style'); 
     et.toggleClass('acc-edit-fn'); 
     } 
     }; 

这是一部分,一切崩溃:

if(delayed > 0) {  
    setTimeout(et.toggleClass('acc-edit-fn'), delayed); 
    setTimeout(('#opacity-modal').toggleClass('acc-edit-fn').removeAttr('style'), delayed);   
} 

这不要紧,我会用延迟 - 的setTimeout或延迟(),没有什么工作。只有在那之后等待“延迟”和火灾事件的可能方法是什么?

这里是小提琴:http://jsfiddle.net/22u8Y/

回答

1

setTimeout接受函数或代码段(字符串格式)延迟之后执行。你也('#opacity-modal')

使用

if(delayed > 0) {  
    setTimeout(function(){et.toggleClass('acc-edit-fn'); }, delayed); 
    setTimeout(function(){ $('#opacity-modal').toggleClass('acc-edit-fn').removeAttr('style');}, delayed);   
} 
+0

谢谢你,它的工作之前错过$!定时器后我会接受你的答案。 – Dazvolt