Est-il possible d'empêcher la fonction sur le <div>
l'élément de s'exécuter lorsque vous cliquez sur le bouton à l'intérieur de la div?
Lorsque vous cliquez sur l'élément bouton, la fonction: toggleSystemDetails
ne doit pas être déclenchée? Est-ce possible dans Vue?
<div v-on:click="toggleSystemDetails($event, system.id);" class="grid-tile__list-item" v-for="(system, index) in organization.systems" :key="system.id" :class="{'in-viewport fully-in-viewport': system.inview, 'is-xsmall': system.layout === 'xsmall', 'is-small': system.layout === 'small', 'is-medium': system.layout === 'medium', 'is-large': system.layout === 'large'}">
<div class="grid-tile__list-item--overlay">
<button v-on:click="toggleTileOptionsMode($event, system.id, system.name, system.layout)">
Layout Settings
</button>
</div>
Jetez un oeil à Modificateurs d'événements , v-on:click.stop
empêchera ce clic de se propager ou de "bouillonner" jusqu'à l'élément parent.
Voici comment maîtriser ce problème.
Supposons que vous ayez un élément parent et des éléments enfants.
1. (1er cas) Vous voulez que le clic parent n'affecte pas les clics enfants. Mettez simplement à l'élément parent le .self
modificateur:
<div class="parent" @click.self="parent"> <!-- .self modifier -->
<span class="child" @click="child1">Child1</span>
<span class="child" @click="child2">Child2</span>
<span class="child" @click="child3">Child3</span>
</div>
remarque: si vous supprimez le .self
lorsque vous cliquez sur un enfant, l'événement parent se déclenche également.
2. (2ème cas) Vous avez le code ci-dessous:
<div @click="parent">
Click to activate
<i class="fa fa-trash" title="delete this" @click="delete_clicked"></i>
</div>
Le problème est:
La solution est de mettre le .stop
modificateur à l'élément icône pour que l'événement parent ne se déclenche pas.