如何将$(this)作为参数传递给setTimeout函数(方法?)? 以下是我到目前为止所做的工作:
var Variables = {};
Variables.ResizeTimer = false;
Variables.$obj = null;
$('.draggable').resize(function() {
if (Variables.ResizeTimer !== false) {
clearTimeout(Variables.ResizeTimer);
}
Variables.$obj = $(this);
Variables.ResizeTimer = setTimeout(mySizer,
1000
);
});
答案 0 :(得分:6)
试试这个:
Variables.$obj = $(this);
Variables.ResizeTimer = setTimeout(
function(){
mySizer(Variables.$obj);
},
1000
);
来自MPD:
要详细说明,请阅读Javascript闭包
答案 1 :(得分:5)
由于Variables
看起来是全局的,您可以在mySizer
例程中使用它。如果您不想拥有全局变量,可以创建closure:
$('.draggable').resize(function() {
if (Variables.ResizeTimer !== false) {
clearTimeout(Variables.ResizeTimer);
}
var $this = $(this);
Variables.ResizeTimer = setTimeout(function() {
mySizer($this);
}, 1000);
});
答案 2 :(得分:2)
由于还没有人提及它:如果您只需要$(this)
执行与效果相关的操作,您可能只需使用delay
函数而不是setTimeout
。< / p>
$('#some_element').click(function() {
$(this).delay(2000).fadeIn(); // After 2 seconds, start a fade-in
}
还可以向fadeIn
添加函数调用(例如)。这很有用,实际上取决于你的特定用例,但如果它适用于你的情况,它可能会使事情变得容易很多。
希望这会对某人有所帮助......