根據你的例子,「沒有」這樣做的理由。
然而,有些情況下,它會幫助你,雖然有些人可能會對它的使用感到沮喪。
即
$('a.go').click(function(e)
{
e.preventDefault();
if(!$(this).hasClass('busy'))
{
$(this).addClass('busy');
$.ajax(
{
success : function(resp)
{
$(this).removeClass('busy');
},
error : function()
{
$(this).removeClass('busy');
}
});
}
});
在上面,$(this)
的成功和錯誤回調之內不會反映到您單擊的鏈接,範圍已丟失。
要解決這個問題,你會怎麼做var self = $(this)
即
$('a.go').click(function(e)
{
e.preventDefault();
if(!$(this).hasClass('busy'))
{
$(this).addClass('busy');
var btn = $(this);
$.ajax(
{
success : function(resp)
{
btn.removeClass('busy');
},
error : function()
{
btn.removeClass('busy');
}
});
}
});
是否setTimeout的構造函數中運行?或者它是課堂的方法? – ozz 2012-07-20 10:16:12
@ozz:查看['window.setTimeout']的文檔(https://developer.mozilla.org/en/DOM/window.setTimeout);它會延遲提供的函數的執行時間,以指定的毫秒數。 – Matt 2012-07-20 10:17:45
更不用說,setTimeout還允許你傳遞一個參數。即http://jsfiddle.net/gRoberts/rYB3f/,在您的示例中,它將刪除將'this'重新聲明爲'self'的需要。 – Gavin 2012-07-20 10:22:17