JavaScript作用域问题

标签 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”在放入函数时并不指向同一个对象,它指向当前函数(在您的情况下为“监听器”)。如果可以选择的话,请将其作为参数(这取决于您如何调用函数)。

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

listener(this);

关于JavaScript作用域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1858980/

相关文章:

Java 访问主类变量

spring - 测试 Spring Scope 是否处于事件状态

javascript - 使用 Javascript 调用 Flash (.swf) 文件中的方法?

javascript - 如何获取所有 div 中特定 <div> 中存在的文本

javascript - 如何使用 jquery 在 Cypress 测试中获取 div 'text' 值

javascript - 如何在 jquery 加载函数期间滚动到底部

php - 从 json 返回多个值

javascript:在另一个文件中使用一个文件中的变量

javascript - 使用 jquery 或其他库形成提示

javascript - Sagepay iframe 集成 - 账单地址