JavaScript范围问题

use*_*729 0 javascript jquery scope

代码段如下:

$(this).parents('td:first').next().find('option').customizeMenu('myMenu2');
Run Code Online (Sandbox Code Playgroud)

这有效,但是:

var listener = function(){
 $(this).parents('td:first').next().find('option').customizeMenu('myMenu2');
};
listener();
Run Code Online (Sandbox Code Playgroud)

不工作,为什么以及如何解决它?

Bjö*_*örn 6

放入函数时,'this'不指向同一个对象,它指向当前函数(在您的情况下为'listener').如果这是一个选项(取决于您如何调用您的函数),请将其作为参数.

var listener = function(obj){
 $(obj).parents('td:first').next().find('option').customizeMenu('myMenu2');
};

listener(this);
Run Code Online (Sandbox Code Playgroud)