Deux autres méthodes qui pourraient travailler pour vous:
1
events: {
'click a': 'link',
'click *:not(a, a *)': 'openPanel'
}
Puis openPanel de ne pas capturer click
événements sur n'importe quel <a>
ou l'enfant d'un <a>
(dans le cas où vous avez une icône dans votre <a>
tag).
2
En haut de l' openPanel
méthode, assurez-vous que la cible de l'événement n'était pas un <a>
:
openPanel: function(event) {
// Don't open the panel if the event target (the element that was
// clicked) is an <a> or any element within an <a>
if (event && event.target && $(event.target).is('a, a *')) return;
// otherwise it's safe to open the panel as usual
}
Notez que ces deux méthodes permettent encore l' 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 un event
argument et ça va être bien. Vous aussi vous n'avez pas à faire quelque chose de spécial dans votre link
fonction -- juste gérer l'événement de clic et de progresser. Bien que vous aurez probablement toujours envie de les appeler event.preventDefault()
.