Comment puis-je arrêter la propagation de l'évènement avec Backbone.js?
À l'aide d'un Backbone.js Vue, dire que je veux inclure les événements suivants:
events: {
'click a': 'link',
'click': 'openPanel'
}
Comment puis-je éviter openPanel être déclenché lorsque je clique sur un lien. Ce que je veux, c'est avoir un bouton qui déclenche une action, mais cette zone peut avoir des éléments qui devraient déclencher d'autres actions, et non pas le parent de l'action. Pensez par exemple Twitter.com et des liens dans les Tweets/panneau de droite.
Vous devez vous connecter pour publier un commentaire.
J'ai été en utilisant
e.stopImmediatePropagation();
afin de maintenir le cas de la multiplication. Je souhaite qu'il y avait une façon plus simple de faire cela. Je voudrais retourner faux; mais c'est à cause de ma familiarité avec jQueryLe JQuery
preventDefault
méthode serait également une bonne option.preventDefault
s'arrête utilisateur d'aller sur le lien de href.stopImmediatePropagation
permet à l'utilisateur d'aller à l'link href comme prévu, mais cesse de l'événement click de se propager à l'extérieur de gestionnaire.Chacun de vos gestionnaires d'événement sera passé d'un objet d'événement lorsqu'il est déclenché. À l'intérieur de votre gestionnaire, vous avez besoin pour tirer profit de jQuery événement.méthode stopPropagation (). Par exemple:
TypeError
(objet n'a pas de méthode "preventPropagation') qui arrête immédiatement le cas de remontée desstopDefault()
? 😉view.el
) mais alors la capture de barbotage d'événements et de filtrer lesevent.target
contre pour le sélecteur de spécifié.Deux autres méthodes qui pourraient travailler pour vous:
1
Puis openPanel de ne pas capturer
click
événements sur toute<a>
ou l'enfant d'un<a>
(dans le cas où vous avez une icône dans votre<a>
tag).2
En haut de la
openPanel
méthode, assurez-vous que la cible de l'événement n'était pas un<a>
:Noter que ces deux méthodes permettent toujours de la
openPanel
fonction qui doit être appelée d'ailleurs (à partir d'une vue parent ou une autre fonction de ce point de vue, par exemple). Il suffit de ne pas passer unevent
argument et ça va être bien. Vous aussi vous n'avez pas à faire quelque chose de spécial dans votrelink
fonction -- juste gérer l'événement de clic et de progresser. Bien que vous aurez probablement toujours envie de les appelerevent.preventDefault()
.Retour "false" dans votre "lien" de la fonction.