2010-05-26 4 views
1

Disons que nous avons ce balisage:Jquery Ignorer l'événement

<span href="">Text <a href="">Link</a></span> 

Nous avons des événements liés aux deux éléments. Comment faire en sorte que lorsque je clique sur la balise d'ancrage, l'événement sur le parent ne sera pas déclenché? J'ai essayé d'utiliser la méthode Jquery stopPropagation() mais toujours pas de chance. Des pensées? Merci.

Répondre

2

Comment utilisez-vous stopPropagation()? Quelque chose comme cela devrait fonctionner:

$("a.something").click(function(event){ 
    event.stopPropagation(); 
    window.location.href = '/your/destionation.html'; 
}); 
2

Je ne sais pas pourquoi stopPropagation() ne fonctionne pas pour vous. Compte tenu de votre exemple HTML, le code suivant fonctionne correctement, car l'événement sur le span n'est pas déclenché.

$('span').click(function() { 
    alert('span'); 
}); 

$('a').click(function(e) { 
    e.stopPropagation(); 
    alert('a'); 
}); 

Si vous utilisez live() pour lier vos gestionnaires d'événements, vous aurez des problèmes.

+0

J'ai un sentiment stopPropagation() pas e.stopPropagation() a été utilisé .. –

+0

J'ai essayé de l'utiliser de la même manière, et peut-être que je devrais essayer à nouveau. BTW, il y a une ligne "e.preventDefault()", je ne sais pas si cela a quelque chose à voir avec le problème, n'est-ce pas? Merci. – HealthWarning

+0

@HealthWarning - Utilisez-vous 'live()' pour lier les événements? 'e.preventDefault()' désactive le comportement par défaut de l'élément. Par exemple, si vous ne voulez pas suivre le 'href' dans l'élément' a', vous l'utiliserez pour désactiver le comportement de 'a'. – user113716