2011-08-23 78 views
0

所以我在我的自定義.js文件名爲EditableObject新創建的Javascript對象文件使用Javascript/jQuery對象編碼問題

function EditableObject(e, dv, i) { 
this.element = e; 
this.default_value = dv; 
this.set = 0; 
this.id = i; 

alert(this.element.html()); 

this.element.click(function (event) { 
    alert(this.element.html()); 
}); 

}

在我的主頁,我一個div稱爲「場」有像這樣的在它的文本「是啊」:

<div id="field">yeah</div> 

在我的主要頁面的腳本部分,我有:

var t = new EditableObject($("#field"), "value", 1); 

頁面加載時,會出現一個警告框,提示「是」。但是當我點擊div時,我得到一個錯誤,說「this.element是未定義的」。這是爲什麼發生?

回答

2

裏面你click處理器,this指的是不同的範圍(取決於瀏覽器,它會成爲event對象或當前功能)。您需要關閉以訪問父範圍的this

var self = this; 
this.element.click(function (event) { 
    alert(self.element.html()); 
}); 
2

this的事情是,它根據上下文在每個功能不同。在jQuery的綁定的功能,它是元件本身所以最直接的解決方案是:

this.element.click(function (event) { 
    alert($(this).html()); 
    // this is element, $(this) is jQuery object containing element 
}); 

所以目前,this指元件,其從例如不同它指的是EditableObject實例,因爲有你在不同的功能使用this

this.id = i; 

0

您的點擊處理程序內部引用DOM對象,而不是EditableObject的實例。

你可以修改它是這樣的:

this.element.click(function (event) { 
    alert($(this).html()); 
}); 
0

在點擊功能僅指點擊本身。我相信你可以使用

e.html(); 

有代替