2012-04-12 50 views
1

我有一個這樣的對象:JQuery的可放開()不承認「此」對象引用

function ImageHolder(Attributes, Parent) 
{ 
    this.Id = Attributes['Id']; 
    this.Parent = Parent; 

    this.Element = $('<div/>'); 

     this.msg = "hello world"; 

    this.Parent.append(this.Element); 


    this.handleDrop = function(e, ui) 
    { 
     alert(this.msg); 

    }; 

    this.Element.droppable({drop: this.handleDrop}); 
} 

然後我創建這樣一個對象:

holder = new ImageHolder(A,B); 

但是當我嘗試和降東西到元素,我得到這個錯誤:

this.msg is undefined 

我在這裏做錯了什麼?

回答

2

請複製一份;

var thisCopy = this; 

以下功能之前,則更換這樣的...

this.handleDrop = function(e, ui) 
{ 
    alert(thisCopy.msg); 

}; 
+0

感謝,這個工作。但爲什麼這樣呢? – unni 2012-04-12 10:10:52

+0

handleDrop函數內的'this'指的是handleDrop函數本身,而不是它的外部對象。另外,'thisCopy'(你可以任意命名)是一個淺拷貝,所以它不會與同一頁面上的其他對象發生衝突,並且會同時更新真正的'this'。所以你可以在你的對象的任何地方使用'thisCopy'。 – PaulMrG 2012-04-12 10:15:56