2010-10-05 119 views
0

我希望只有在解除阻塞事件後才發生通知,但兩者都發生在一起。我對JQuery相當陌生。嵌套函數調用

function isSuccess() 
      { 
       $(function() { 
        setTimeout('unblock()',1000); 
        $.notifyBar({ 
        html: "Thank you, your settings were updated!", 
        delay: 2000, 
        animationSpeed: "normal" 
        }); 

       }); 

      } 

回答

2

如果你想notifyBarunblock後執行,將其放置後,另一匿名函數unblock

setTimeout(function() { 
    unblock(); 
    $.notifyBar({ 
     ... 
    }); 
},1000); 
+0

謝謝尼基塔,would'nt它延緩自包含的setTimeout的1秒也通知? – 2010-10-05 06:39:57

+0

@Popo Darin在他的評論 – 2010-10-05 06:45:37

3
$(function() { 
    setTimeout(function() { 
     unblock(); 
     $.notifyBar({ 
      html: "Thank you, your settings were updated!", 
      delay: 2000, 
      animationSpeed: "normal" 
     }); 
    }, 1000); 
}); 
+0

中澄清了這一點。感謝Andy,你能告訴我爲什麼我的代碼無法正常工作嗎?我以爲第一次setTimeout會持續1秒,然後通知欄會發生,但他們都同時發生,波波。 – 2010-10-05 06:37:22

+0

'setTimeout'不會持續1秒。它在執行方法之前等待一秒而沒有阻塞,這意味着它會立即調用'notifyBar'函數。一秒鐘後,解鎖將被調用,並在2秒後通知欄。隨着新代碼,我們等待1秒,然後我們解鎖,2秒鐘後,我們顯示通知欄。 – 2010-10-05 06:40:09

+0

感謝您的解釋,它非常翔實=) – 2010-10-05 06:47:48

1

包裝

function isSuccess() 
{ 
    $(function() { 
     function unblockAndNotify() { 
      unblock(); 
      $.notifyBar({ 
       html: "Thank you, your settings were updated!", 
       delay: 2000, 
       animationSpeed: "normal" 
      }); 
     } 
     setTimeout(unblockAndNotify,1000); 
    }); 
} 

編輯:我該怎麼辦Darin做了什麼,並聲明瞭setTimeout函數,但是確實如此不想一次介紹太多新概念。

1

您需要重新安排通話順序。
要麼你得叫$.notifyBar()unblock()內,或者你正在做的事情一樣

setTimeout(function(){ 
    unblock(); 
    $.notifyBar({ 
      html: "Thank you, your settings were updated!", 
      delay: 2000, 
      animationSpeed: "normal" 
    }); 
}, 1000);