2013-10-31 36 views
0

我有一個名爲paperClass的對象(即使我知道,類在JScript中不存在)。這包含對divElement的引用。現在,通過懸停divElement,我想獲得對paperClass對象的引用。我嘗試了以下方式:循環引用在事件處理函數中似乎不起作用

function paperClass(){ 
    this.divElement = $("#divElementID"); 
    this.divElement.paperElement = this; 
    this.divElement.hover(this.handleHover); 
    console.log(this.divElement.attr("id")); // -> divElementID 
    console.log(this.divElement.paperElement); // -> paperClass Object 
} 

paperClass.prototype.handleHover = function(event){ 
    console.log(this.id); // -> divElementID 
    console.log($(this).attr("id")); // -> divElementID 
    console.log(this.paperElement);  // -> undefined (which seems ok to me) 
    console.log($(this).paperElement); // -> undefined (WHY????) 
} 

我也試過.attr()和$數據()方法。不幸的是我沒有成功。你有什麼想法?提前感謝您的幫助。

回答

0

console.log($(this).paperElement); // -> undefined (WHY????) 

paperElement性質不確定,因爲它只是存在於你勢必this.divElement特定的jQuery對象。

如果您創建了一個新的jQuery對象,它將只具有其由jQuery庫設置的默認屬性。

試試這個:

function paperClass(){ 
    this.divElement = $("#divElementID"); 
    this.divElement[0].paperElement = this; // change this line 
    this.divElement.hover(this.handleHover); 
    console.log(this.divElement.attr("id")); 
    console.log(this.divElement.paperElement); 
} 

paperClass.prototype.handleHover = function(event){ 
    console.log(this.id); 
    console.log(this.paperElement); 
} 
+0

嗨利瑪竇,THX你的答案。 「這個」已經指向了divElement。 this.id返回正確的ID。因此,this.divElement不起作用,不幸的是。 – donald

+0

編輯我的回答:) –

+0

酷:-)你爲我節省了很多時間,感到沮喪。你有這樣奇怪的方式解決這個問題嗎? – donald