在我班级的方法中,我有:
this.background.click(function() {
this.terminate();
});
显然this.terminate();
不起作用,因为this
引用this.background
函数内的jquery.click
。如何从上级获得this
来写作?
答案 0 :(得分:5)
声明包含外部this
的变量:
var self = this;
this.background.click(function() {
self.terminate();
});
答案 1 :(得分:2)
尝试:
this.background.click( $.proxy( this.terminate, this ) );
答案 2 :(得分:0)
你可以像@Andrew那样说,或者可以制作“yourObject.terminate();”
例如:
var yourObject = {
background: $("#background"),
terminate: function ()
{
alert("do something...");
},
addEvents: function ()
{
this.background.click(function()
{
yourObject.terminate();
});
}
};
$(function()
{
yourObject.addEvents();
});
进行改进,确保'背景'选择器存在(如果javascript在html之前加载),并使用jquery“live()”或“delegate()”或“on()”来附加元素中的事件。
答案 3 :(得分:0)
使用bind
$(".detailsbox").click(function(evt){
test.bind($(this))();
});
function test()
{
var $this = $(this);
}