2012-03-14 10 views
9

que tienen un vínculo con este href:¿Cómo pasar la referencia a "esto" en la función href javascript?

href="javascript:foo(this);" 

cuando lo llamo "esto" apunta al objeto de ventana, no el enlace. ¿Cómo paso una referencia al enlace?

http://jsfiddle.net/xMGKz/

editar nota: La pregunta es cómo pasar a href, por lo general no - que sé sobre onclick!

Y no copiar id y hacer getElementById, eso no es "esto", es DOM búsqueda de cierto elemento, no es necesario hacerlo en línea en HTML.

El anwer es: no es posible.

Respuesta

18

Cuando usa "javascript: ...." en un href, llama a esta función global. No en el contexto del enlace. Usted puede tratar con:

<a href="#" onclick="foo(this); return false;">MyLink</a> 

http://jsfiddle.net/xMGKz/1/

+1

en esta llamada, 'this' se referirá independientemente al elemento' a'. aunque no se recomienda este método de enlace de eventos, es mejor que lo vincule a la representación del objeto delimitador, no al elemento DOM. –

+0

@Eliran Malka: Eso es lo que lxx estaba pidiendo ... pasar el elemento A por referencia. – MatuDuke

+0

Sé que funciona con onclick, me preguntaba por qué no funciona con href. No hay forma de obtener una referencia a esto con href, si se llama globalmente. – Ixx

1

En primer lugar, añadir un campo de ID a su ancla.

Entonces ...

el uso de JavaScript estándar:

<a id="someLink" href="javascript:foo(document.getElementById('someLink'));"> 

Usando jQuery:

<a id="someLink" href="javascript:foo($('#someLink'));"> 
+0

Pero esto me lleva a insertar la identificación 2 veces para cada enlace en el texto y eso es algo que quiero evitar. – Ixx

4

subjetivamente que se adapta mejor con algo como:

<a href="javascript:void(0)" id="myAnchor">My Link</a> 

y luego al código:

document.getElementById('myAnchor').onclick = function() { 
    // this is the <a> in here 
    return false; // optional, prevents href from executing at all 
}; 

de esta manera todo es un poco más claro. espero que esto ayude -ck

3

Mejor;

<a href="javascript:void(0)" onclick="alert(this.href);">Link</a> 
Cuestiones relacionadas