2011-06-15 1 views
0

J'ai un lien dans certains html qui appelle une fonction javascript que j'écris. L'appel doit être en ligne si le code est le suivant:Identifier l'appelant

<a href='#' onclick='quipManager.getQuip(1, $(this))'>Test</a> 

Dans la fonction getQuip j'utiliser la présente référence pour modifier la div qui enveloppe le lien au moyen d'.parents (par exemple)

getQuip: function (id, currentQuip) { 
     alert(currentQuip.parents('.qtip').html()); 
    } 

Je dois garder la ligne d'appel, mais ce que je voudrais savoir est si je peux l'utiliser comme ceci:

<a href='#' onclick='quipManager.getQuip(1)'>Test</a> 

et ont encore getQuip savoir quel lien l'a appelé ainsi le suivant fonctionne toujours.

getQuip: function (id) { 
     var currentQuip = id.caller ??? 
     alert(currentQuip.parents('.qtip').html()); 
    } 
+1

Pourquoi * doit * l'appel soit en ligne? – lonesomeday

+0

Pourquoi avez-vous besoin de garder cette ligne de code? Oo – genesis

+0

Parce que le lien est construit à la volée à partir d'un espace réservé dans un document texte créé par l'utilisateur et j'essaie de garder les choses simples.Il est un système de CMS DIY assez moche, mais il est fluage de dernière minute massive! affiner si cela traîne longtemps – BonyT

Répondre

0

Je suppose que la réponse est que vous ne pouvez pas :(

1

Vous cherchez quelque chose comme:

$('#element').click(function() { 
    example.apply(this); 
}); 

var example = function() { 
    $(this).text("it worked"); 
} 

.apply vous permettra de modifier l'affectation par défaut de this dans la fonction d'exemple, vous pouvez donc changer à tout élément, et gérer la même.

http://jsfiddle.net/mwrX2/

+0

il a dit qu'il le veut en ligne – genesis

+1

Alors mettez-le en ligne ... onclick = 'example.apply (this)' ... – Robert

+0

mais la question est - POURQUOI? (whoops, il a supprimé son commentaire, oubliez ce commentaire) – genesis