2009-04-24 6 views
3

J'ai un lien commeAnnuler la fonctionnalité dans un href

<a href="www.site.com" class="cancel">go there </a> 

Et puis j'ai quelques jQuery:

$(".cancel").click(function(){ 
     confirm("sure??"); 
}); 

Mais quand je clique sur Annuler dans la zone d'alerte, il va encore www.site .com au lieu de ne rien faire. Comment résoudre ceci?

Répondre

6

Ajouter la déclaration de retour:

$(".cancel").click(function(){ 
    return confirm("sure??"); 
}); 
+0

me battre d'une seconde. +1 –

+0

Habituellement, cela m'arrive :-) –

1

Renvoyer le bool de confirmation()?

(Pas grand-chose d'un wizz jQuery, bien :))

+0

Vous avez la bonne idée +1 –

8

retour bool est l'ancienne façon de le faire mais pas la méthode préférée dans tous les navigateurs et j'ai eu beaucoup de problèmes avec cela ces jours-ci. jQuery enveloppe l'objet événement et gère l'annulation d'événement pour vous.

http://docs.jquery.com/Events/jQuery.Event#event.preventDefault.28.29

$(".cancel").click(function(event){ 
    if (!confirm("Sure??")) 
     event.preventDefault(); 
}); 
1

Tchad avait raison.

événement.preventDefault(); est le correctif correct. J'ai essayé de retourner false pour un événement click sur une balise d'ancrage et cela ne fonctionnerait pas parce que j'appelais window.location en premier. En définissant event.Default() comme la première ligne de mon gestionnaire, je pourrais alors créer la fenêtre et l'ouvrir correctement sans permettre à href de s'exécuter.