2010-03-29 6 views
0

je lien qui appelle une fonction lorsque vous cliquez dessus:Obtenir l'ID d'un objet lorsque l'objet est donné

<a href="javascript:spawnMenu(this);" id="link1">Test1</a> 

Pour faire mon travail de fonction, je besoin d'accéder à l'objet afin que je puisse effectuer des opérations jQuery comme ceci:

alert($(objCaller).offset().left); 

Depuis objCaller pointe vers l'objet et non l'ID d'objet, cela ne fonctionnera pas. Je besoin de quelque chose comme ceci:

alert($("a#link1").offset().left); 

Comment puis-je obtenir l'ID d'objet de objCaller?

+1

objCaller.id ne fonctionne pas? –

+0

utilise objCaller.id – pawel

Répondre

3

Vous devez faire ceci:

<a href="javascript:;" onclick="spawnMenu(this);" id="link1">Test1</a> 

Vous ne pouvez pas passer this via un javascript: URL.

2

Cela ne fonctionne-t-il pas?

objCaller.id 
+0

'Test1' renvoie 'undefined'. – Pieter

+1

Oh, oui, c'est parce que vous ne pouvez pas passer 'this' dans un href. Passez-le via l'événement 'onclick' à la place. – tloflin

0

Juste au dessus de ma tête: est-ce que alert($(this).offset().left); ne fonctionne pas? Sinon, vous pouvez obtenir l'ID via $(this).attr("id").

+0

Voir la réponse de Rob ci-dessous. Je n'ai même pas examiné cette partie de la question. – Todd

0

Il n'est pas clair à partir de votre question à quoi objCaller se réfère. S'il se rapporte à l'élément lui-même, alors $ (objCaller) fonctionnerait bien avec jQuery. Essayez votre code en utilisant firebug (une extension pour firefox). Vous pouvez échanger « alerte » pour « console.log » si vous avez:

console.log(objCaller); 

Cela vous aidera à déterminer exactement ce qui est stocké dans objCaller (il est pas un élément si $ (objCaller) n'est pas travailler, comme je le dis).

Si objCaller est un élément, objCaller.id serait le moyen de récupérer l'ID.

0

Vous pouvez obtenir l'ID en faisant ceci:

function spawnMenu (elem) { 
    var id = elem.id; // elem is just a DOM node, so access it's id 

    // your code here... 
} 

Cependant, jQuery devrait également être en mesure d'envelopper un nœud DOM, donc ce qui suit devrait fonctionner aussi bien:

function spawnMenu (elem) { 
    elem = $(elem).get(0); 

    // your code here... 
} 
Questions connexes