2010-06-22 62 views
4

是否有相當於在jQuery的1.4.2 setTimeoutclearTimeout功能....我發現這個前它使用的jQuery 1.3.2 ..的jQuery 1.4.2等效setTimeout和clearTimeout

var alerttimer = window.setTimeout(function() { 
      $alert.trigger('click'); 
      }, 3000); 
      $alert.animate({height: $alert.css('line-height') || '50px'}, 200) 
      .click(function() { 
       window.clearTimeout(alerttimer); 
       $alert.animate({height: '0'}, 200); 
      }); 

回答

3
$(document.body).delay(3000).show(1, function(){ 
    // do something 
}); 

這將使用jQuerys fx排隊創建一個超時。要以這種方式模擬一個區間,可以使用一個在回調閉包中自己調用的函數。

function repeat(){ 
    // do something 
    $(document.body).delay(5000).show(1, repeat); 
} 

使用$(document.body).stop()來清除fx隊列並停止時間間隔。

這種工作類似於javascript「setTimeout」間隔「黑客」。

(function(){ 
    alert('I popup every 5 seconds! haha!'); 
    setTimeout(arguments.callee, 5000); 
})(); 
+0

請注意.delay()可能不會每5秒發生一次。事實上,由於執行時間的原因,它很可能會以稍大的間隔發生。 'repeat()'中的代碼需要時間來執行,然後設置延遲。它的工作原理,但它不會像setInterval() – 2010-07-19 18:11:36

+0

@Ryan:你就在那裏。但是,無論如何,由於'UI隊列','ecma-/javascript'中的計時器並不準確。例如'setTimeout()'的原因是,在特定時間後添加一些代碼到'UI隊列'中。它並不贊同立即執行。 – jAndy 2010-07-19 19:40:16

4

setTimeoutclearTimeout都是原生JavaScript方法,所以它們在jQuery 1.4.2中工作,也是–,因此在jQuery中不需要等價物。

+0

jquery中的'delay'函數與'settimeout'類似嗎? – 2010-06-22 06:45:17

+0

@Pandiya,'.delay()'方法有點不同。是的,它是'setTimeout'的一個包裝,但它在隊列中用來延遲後續函數的運行。例如'$('#foo')。slideUp(300).delay(800).fadeIn(400);'。這對你的情況沒有幫助。 – 2010-06-22 06:47:10