Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript范围问题_Javascript_Jquery_Scope - Fatal编程技术网

javascript范围问题

javascript范围问题,javascript,jquery,scope,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(); 不工作,为什么以及如何修复它?'this'在放入函数时不指向同一对

代码片段如下所示:

$(this).parents('td:first').next().find('option').customizeMenu('myMenu2');
这是可行的,但是:

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

不工作,为什么以及如何修复它?

'this'在放入函数时不指向同一对象,它指向当前函数(在您的示例中为'listener')。如果这是一个选项,则将其作为一个参数(取决于调用函数的方式)


这是函数。尝试:

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