我們通過例子來說明一下jQuery中setTimeout的幾種使用方法, 首先准備好測試用的DIV和公共函數:
. 代碼如下:
<div id="div_debug"></div>
<script src="http://www.studyday.net/demo/jquery.js"></script>
<script language="JavaScript">
functionlog(s){
$('#div_debug').append(s+'<br>');
}
//下文中測試用的代碼可以放在這一行注釋的下面,替換掉 //...
//...
</script>
原生態 javascript 中的 setTimeout 基本用法是像這樣子的.
. 代碼如下:
//原生態 javascript 中的 setTimeout 基本用法
functionfunA(){
log('funA...');
setTimeout('funA()', 1000);
}
funA();
下面是jQuery中setTimeout的幾種使用方法. 在線實例
. 代碼如下:
//jQuery 中的用法
functionfunA(){
log('funA...');
setTimeout('funA()', 1000);
}
jQuery(document).ready(function($){
//用法1 : 把要調用的函數寫在ready外面,使它成為全局函數
funA();
//用法2 : 直接寫函數名,不能帶括號也不能帶引號,適合沒有參數的函數
functionfunB(){
log('funB...');
setTimeout(funB, 1000);
}
funB();
//用法3 : 通過調用匿名函數來執行,適合有帶參數的函數
functionfunC(v){
log('funC...'+v);
setTimeout(function(){funC(v+1)}, 1000);
}
funC(1);
//用法4 : 通過在jQuery命名空間上增加函數,適用面更廣
$.extend({
funD:function(v){
log('funD...'+v);
setTimeout("$.funD("+(v+1)+")",1000);
}
});
$.funD(100);
});
用法2和用法3的區別很明顯, 但用法3和用法4的區別在哪裡呢?為什麼說用法4比用法3適用面更廣呢?通過下面這個例子可以很直觀的明白二者的區別:
. 代碼如下:
jQuery(document).ready(function($){
//用法3 : 通過調用匿名函數來執行,適合有帶參數的函數
functionfunC(v){
log('funC...'+v);
setTimeout(function(){funC(v+1)}, 1000);
}
//用法4 : 通過在jQuery命名空間上增加函數,調用起來更方便
$.extend({
funD:function(v){
log('funD...'+v);
setTimeout("$.funD("+(v+1)+")",1000);
}
});
});
jQuery(document).ready(function($){
//funC(1); //去掉注釋後執行這一句時會報錯
$.funD(100); //這一句是正常的, 明白兩者之間的區別了吧
});