如何访问 jQuery 事件函数中的对象属性
How to access to object property inside jQuery event function
对不起我的英语。下面是示例代码:
/**
* @constructor
*/
function MyNewClass(){
this.$my_new_button = $('<button>Button</button>');
this.my_value = 5;
this.init = function (){
$('body').append(this.$my_new_button);
this.$my_new_button.click(
function (){
// Its always alerts "undefined"
alert(this.my_value);
}
)
}
}
如何在 jQuery 点击事件函数中访问对象my_value
属性?可能吗?
您可以执行以下操作
function MyNewClass(){
this.$my_new_button = $('<button>Button</button>');
this.my_value = 5;
var self = this; //add in a reference to this
this.init = function (){
$('body').append(this.$my_new_button);
this.$my_new_button.click(
function (){
//This will now alert 5.
alert(self.my_value);
}
);
};
}
这是javascript中的一个小模式(尽管这个名字让我难以理解)。它允许您访问内部函数中函数的顶级成员。在嵌套函数中,您不能使用"this"来引用顶级成员,因为它只会引用您所在的函数。因此,需要将顶级函数"this"值声明到它自己的变量中(在本例中称为self)。
Jquery有一个方法,jQuery.proxy(函数,上下文):
function MyNewClass(){
this.$my_new_button = $('<button>Button</button>');
this.my_value = 5;
this.init = function (){
$('body').append(this.$my_new_button);
this.$my_new_button.click(
$.proxy(function (){
// Its always alerts "undefined"
alert(this.my_value);
},this)
)
}
}
演示
相关文章:
- 在javascript中调用函数/对象引用时,可容纳任何数据类型
- 访问函数对象的上下文属性|如何
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- 如何将函数对象从javascript传递到Polymer元素
- 为什么函数对象的实例没有继承函数原型属性
- 为什么我会从 JavaScript 函数返回一个命名函数(对象)
- 为什么实例构造函数指向最上面的函数构造函数对象
- 使用object.freeze()扩展函数对象-can't添加字段
- 为什么'这'与函数对象一起使用时会有不同的处理方式
- setTimeout()/setInterval()赢得't执行**我正在传递函数对象,而不是执行函数
- 为什么茉莉花间谍不't通过引用解析函数对象
- 在 mongo map 中调用外部 javascript 函数(对象)或减少上下文的可能方法
- 在 JavaScript 中为函数对象添加别名
- 在 Express JS 中从路由调用函数对象
- 函数对象的名称属性是什么
- 构造函数对象
- 节点.js - 从另一个函数/对象发出事件
- 声明函数是否会创建具有函数名称和分配给它的函数对象的变量
- 函数对象__proto__和原型属性
- 类仿真 - 模块模式与函数对象