2009-04-03 14 views
6

¿Cómo puedo vincular una función usando jQuery a una y solo una etiqueta de enlace en mi documento HTML que tiene varios enlaces?¿Cómo vincular jQuery al enlace ONE <a> a una función onclick?

Mi código es así;

$("a").click(function(){ 
    $("#login").slidedown("slow"); 
}); 

Pero esto une todos los enlaces del documento.

+1

La razón por la que se seleccionan todos los enlaces es que está diciendo $ ('a'), que se traduce como, "para cada elemento A, iterar y adjuntar un controlador de clic". Cuando en realidad quiere decir "find $ ('a # show_login') y adjuntar este manejador de clic." jQuery coincide con cada elemento encontrado dentro de la instrucción de selector. –

Respuesta

13

Nombre su ancla/enlace que tiene el evento click con un atributo id.

Así, por ejemplo:

<a href="..." id="clicked_link">...</a> 

Y a continuación, utilizar la siguiente declaración jQuery:

$("#clicked_link").click(function(){ $("#login").slidedown("slow"); }); 

fácil como pastel!

14

Para expandir en Michael, querrá agregar un retorno falso;

$("#clicked_link").click(function(){ 
    $("#login").slidedown("slow"); 
    return false; 
}); 

De lo contrario, cuando haga clic en el enlace, el navegador seguirá intentando seguir el enlace y perderá la acción de javascript.

+0

Normalmente establezco href = "javascript: void (0);" – Aistina

+0

no deberías hacer eso. El objetivo de jquery es ser discreto. Si deja href para hacer algo, estará a salvo si el navegador no tiene habilitado javascript, lo que ha hecho es que su enlace sea completamente ineficaz sin javascript. –

+1

OTOH, no olvide que si se sigue el enlace, algo debe estar presente por si acaso (como una pantalla de inicio de sesión). Otra forma de hacerlo es eliminar el href o usar un #anchor como enlace para que no se pueda seguir. O use un span/div con un manejador de clics asociado. También diría algo como #show_login. –

Cuestiones relacionadas