2010-08-06 6 views
0

Je ne sais pas quelle est la meilleure façon d'aborder cette question.Objets Javascript et jQuery

J'ai un contrôle que je veux être en mesure d'ouvrir et de persister certaines données ou de le modifier à la volée.

function TaskControl(params) { 
    this.params = params; 

    this.openTaskControl = function() { 
     alert("openTaskControl"); 
    } 

    $("#button").click(function() { 
     this.openTaskControl(); 
    }); 
} 

Le problème que je vais avoir est que d'essayer d'appeler openTaskControl renvoie une erreur, car this fait apparemment référence à l'élément HTML et non l'TaskControl. Comment est-ce que j'appelle cette fonction de l'intérieur de la fonction de clic?

Répondre

4
function TaskControl(params) { 
     this.params = params; 
     var that = this; 

     this.openTaskControl = function() { 
       alert("openTaskControl"); 
     } 

     $("#button").click(function() { 
       that.openTaskControl(); 
     }); 
} 
3

La portée interne fera référence à un autre objet this. Utiliser des variables à la place:

function TaskControl(params) { 
    var paramsSave = params; 

    var openTaskControl = function() { 
     alert("openTaskControl"); 
    } 

    $("#button").click(function() { 
     openTaskControl(); 
    }); 
}