2010-08-22 6 views
2

Salut les gars, j'ai une fonction qui accepte this en tant que paramètre - 'this' se référant à l'élément dom qui, après avoir cliqué devrait exécuter une fonction. La chose est que je veux que cette fonction soit appelée après un petit délai mais en passant le terme variable this ne fonctionne pas comme lorsque la fonction est exécutée 'this' ne se réfère pas à l'objet passé dans le paramètre mais à la objet de fenêtre.Problèmes avec l'exécution de setTimeout sur une fonction - passage de ce paramètre en tant que paramètre

Comment puis-je faire cela?

Répondre

2

Vous pouvez capturer this:

var t = this; 
window.setTimeout(function() { 
    // use the t variable here 
}, 2000); 
2

prototypejs ajoute la méthode bind()-Function.prototype. Cette méthode vous permet de lier une fonction et des arguments au contexte d'un objet particulier. Simplement,

window.setTimeout((function() { 
    alert(this); 
}).bind(this), 2000); 

La meilleure partie est que cette méthode fait maintenant partie de la spécification ECMA-262, qui est basé sur JavaScript, et les implémentations natives déploient dans les navigateurs modernes. PrototypeJS n'ajoutera cette méthode que si elle n'est pas déjà implémentée.

J'ai mis en place un exemple de script au http://jsfiddle.net/rLpbx/.

+0

Je reçois une erreur ici dans firebug - ma fonction s'exécute en ignorant le timeout et firebug déclare son settimeoutcall inutile insistant sur le fait que je mets des guillemets autour du code :( – Ali

+0

@Ali: cela semble être une erreur étrange. votre question avec le code que vous avez, je vais jeter un coup d'oeil et voir quel est le problème. –

Questions connexes