在setTimeout中传递$(this)

Phi*_*enn 2 jquery jquery-ui

如何将$(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
    );
});
Run Code Online (Sandbox Code Playgroud)

Nea*_*eal 6

试试这个:

    Variables.$obj = $(this);
    Variables.ResizeTimer = setTimeout(
         function(){
             mySizer(Variables.$obj);
         },
         1000
    );
Run Code Online (Sandbox Code Playgroud)

来自MPD:

要详细说明,请阅读Javascript闭包

  • 要详细说明,请阅读Javascript闭包. (2认同)

Ata*_*hev 5

由于Variables看起来是全局的,您可以在mySizer例程中使用它.如果您不想拥有全局变量,可以创建一个闭包:

$('.draggable').resize(function() {
    if (Variables.ResizeTimer !== false) { 
        clearTimeout(Variables.ResizeTimer);
    }
    var $this = $(this);
    Variables.ResizeTimer = setTimeout(function() {
        mySizer($this);
    }, 1000);
});
Run Code Online (Sandbox Code Playgroud)