JavaScript范围问题

时间:2009-12-07 09:56:13

标签: javascript jquery scope

代码段如下:

$(this).parents('td:first').next().find('option').customizeMenu('myMenu2');

这有效,但是:

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

不起作用,为什么以及如何解决?

2 个答案:

答案 0 :(得分:6)

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

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

listener(this);

答案 1 :(得分:3)

this是函数。尝试:

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