2012-07-23 5 views
-1

J'ai une page avec div et un bouton dessus. J'ai ajouté l'événement onClick aux deux. Maintenant, quand je clique sur le bouton sur le div, onClick de la div est également en cours d'exécution. Est-il possible que je puisse éviter cela?Plusieurs événements OnClick JQuery tirant

Merci,

+0

fix it! Pensez-vous que nous pourrions voir du code pour vous aider? Vous avez essentiellement dit "J'ai un problème" jusqu'à présent. – jeschafe

+1

Cela ressemble à un problème avec ** propagation d'événements **. – Scotty

+0

duplication possible de [Empêcher le clic sur l'événement de clic parent déclencheur de l'enfant] (http://stackoverflow.com/questions/6929198/prevent-click-from-child-firing-parent-click-event) –

Répondre

2

Essayez ceci, passer l'événement en tant que paramètre à votre événement onclick et appelez

event.stopPropagation(); 
event.preventDefault(); 

votre affectation d'événement onclick doit être:

$(button).click(function(event) { 
    // script here 
    event.stopPropagation(); 
    event.preventDefault(); 
}); 
0

dans l'écouteur de l'élément de liaison, vous pouvez mettre e.stopPropagation(), ce qui devrait le fixer (si vous utilisez bouillonnement d'événement).

Si vous n'utilisez pas jQuery, veillez à définir le paramètre useCapture de addEventListener() sur Falseinfo - MDN; vous voulez être sûr de savoir dans quelle direction vos événements se déplacent à travers le DOM (vous voulez qu'ils éclatent).

0

Vous devez empêcher l'événement button onClick de bouillonner dans Div. Donc, fondamentalement, à la fin de votre fonction onclick pour le bouton, une fois que vous avez fait tout ce que vous logique, vous devez appeler event.stopPropagation()

1

Dans votre gestionnaire de clic, vous pouvez utiliser "stopPropagation" par exemple:

$("button").click(function(e) { 
    // handle this event 
    // ... 

    // don't pass this event up to parent handlers 
    e.stopPropagation(); 

}); 

Il y a aussi une fonction connexe que vous pourriez vouloir lire à propos de "preventDefault" qui dit au navigateur de ne pas faire ce qu'il fait normalement automatiquement (par ex. soumettre une page quand un bouton d'envoi est cliquée)

Voir aussi: https://developer.mozilla.org/en/DOM/event.stopPropagation http://api.jquery.com/event.stopPropagation/ What's the effect of adding 'return false' to a click event listener? http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

0

Si aucun des travaux ci-dessus, essayez:

$("button").click(function(e) { 
    e.stopImmediatePropagation(); 
}); 
Questions connexes