根据你的例子,“没有”这样做的理由。
然而,有些情况下,它会帮助你,虽然有些人可能会对它的使用感到沮丧。
即
$('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