抱歉我的英文。以下是示例代码:
/**
* @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 click事件函数中访问对象my_value
属性?
有可能吗?
答案 0 :(得分:6)
您可以执行以下操作
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中的一个小模式(虽然这个名字不包括我)。它允许您在内部函数中访问函数的顶级成员。在嵌套功能中,您无法使用&#34;这个&#34;引用顶级成员,因为它只会引用您所在的功能。因此需要申报顶层功能&#34;这个&#34;将值转换为自己的变量(在本例中称为self)。
答案 1 :(得分:4)
Jquery有一个方法,jQuery.proxy( function, context ):
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)
)
}
}