2012-04-12 16 views
1

Ich habe ein Objekt wie folgt aus:JQuery abwerfbaren() erkennt nicht „das“ Objektverweis

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}); 
} 

ich dann ein Objekt wie folgt erstellen:

holder = new ImageHolder(A,B); 

Aber wenn ich versuche und Drop etwas auf das Element, bekomme ich diesen Fehler:

this.msg is undefined 

Mache ich hier etwas falsch?

Antwort

2

Erstellen Sie eine Kopie davon;

var thisCopy = this; 

vor der folgenden Funktion, ersetzen Sie dann wie so ...

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

}; 
+0

Dank, arbeiteten diese. Aber warum ist es so? – unni

+0

'this' in der handleDrop-Funktion bezieht sich auf die handleDrop-Funktion selbst und nicht auf das Objekt außerhalb davon. Außerdem ist 'thisCopy' (das Sie benennen können, was immer Sie möchten) eine flache Kopie, so dass es nicht mit anderen Objekten auf derselben Seite in Konflikt gerät und das reale 'this' zur gleichen Zeit aktualisiert. So können Sie 'thisCopy' überall in Ihrem Objekt verwenden. – PaulMrG

Verwandte Themen