2014-05-22 56 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