2009-04-03 7 views
6

Comment lier une fonction en utilisant jQuery à un et une seule étiquette de lien dans mon document HTML qui a plusieurs liens?Comment lier jQuery à un lien <a> à une fonction onclick?

Mon code ressemble à ceci;

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

Mais cela lie tous les liens dans le document.

+1

La raison pour laquelle tous les liens sont sélectionnés est que vous dites $ ('a'), ce qui se traduit par «pour chaque élément A, itérez et attachez un gestionnaire de clic». En fait, vous voulez dire "find $ ('a # show_login') et attacher ce gestionnaire de clic." jQuery correspond à tous les éléments trouvés dans l'instruction de sélection. –

Répondre

13

Nommez votre ancre/lien qui a l'événement click avec un attribut id.

Ainsi, par exemple:

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

Et puis utilisez l'instruction jquery suivante:

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

Facile comme bonjour!

14

Pour développer sur Michael, vous devez ajouter un retour false;

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

Sinon, lorsque vous cliquez sur le lien, le navigateur toujours essayer de suivre le lien et vous perdrez l'action javascript.

+0

J'ai l'habitude de mettre href = "javascript: void (0);" – Aistina

+0

vous ne devriez pas faire cela. Le point de jquery est d'être discret. Si vous quittez href pour faire quelque chose, vous êtes alors en sécurité si le navigateur n'a pas activé javascript, ce que vous avez fait rend votre lien complètement inefficace sans javascript. –

+1

OTOH, ne pas oublier si le lien est suivi, quelque chose doit être là au cas où (comme un écran de connexion). Une autre façon de le faire est d'effacer le href, ou d'utiliser un #anchor comme lien de sorte qu'il ne peut pas être suivi. Ou utilisez un span/div avec un gestionnaire de clic associé. Je dirais aussi quelque chose comme #show_login. –

Questions connexes