2010-05-18 6 views
19

J'ai créé une bascule jquery, mais lorsque je clique sur le lien pour ouvrir une div, elle sautera en haut de la page. Comment puis-je réparer cela?jquery toggle: cliquer sur le lien saute en haut de la page

Je sais que je pourrais remplacer le lien par quelque chose d'autre mais je dois indiquer clairement aux utilisateurs qu'il s'agit d'un lien et qu'ils peuvent cliquer dessus.

Répondre

37

Ajoutez return false; à la fin du code qui s'exécute lorsque vous cliquez sur le lien.

$('a.myLink').toggle(function() { 
    // run my code 
    return false; 
}); 

Vous pouvez également saisir l'objet event et appelez .preventDefault().

$('a.myLink').toggle(function(event) { 
    event.preventDefault(); 
    // run my code 
}); 

Ces deux méthodes désactivent le comportement par défaut du lien. Le premier empêchera également l'événement de bouillonner, donc utilisez-le seulement si vous n'avez pas besoin d'utiliser l'événement qui bouillonne.

+0

merci. fonctionne parfaitement – shaikh

3

C'est parce qu'il ya une action par défaut associée à des éléments tels que des liens, des cases à cocher, boutons radio etc. Vous pouvez l'annuler comme ceci:

$('a.mylink').click(function(ev) { // Pass in the event object to your function 
    // do stuff 
    ev.preventDefault(); 
    return false; 
}); 

Plus d'informations ici: http://api.jquery.com/event.preventDefault/

Dans les rares cas d'attacher un gestionnaire d'événement à un enfant d'un lien, vous devrez également utiliser event.stopPropagation(), pour arrêter l'événement bouillonnant le DOM.

Questions connexes