J'ai une liste en tant que composant et il contient une fenêtre cachée comme facebook. Par exemple, vous cliquez sur un élément de la liste, et il montre pop-up sur l'élément here is my interface that I mentionedComment vérifier les clics de l'utilisateur afin de faire basculer la popup? [VueJS]
ici est modèle
<template id="adboard-group-sidebar-member-template">
<li class="card-item" data-member-id="{{ member.id }}" @click="toggleMemberCard">
item content
</li>
</template>
ici est vuejs
toggleMemberCard(event) {
this.popupDisplayed = !this.popupDisplayed;
},
Il fonctionne correctement avec v-if/v-show attributs. Mais ne fonctionne que sur la liste des articles. Si l'utilisateur veut cliquer sur n'importe quel emplacement sur l'interface. Je vérifie comme les lignes suivantes:
popupListener(event) {
let element = $(event.target),
allCard = $(document).find('.popup'),
pointer_popup = element[0].closest('.popup'),
pointer_card = element[0].closest('.card-item');
if ((!pointer_popup && !pointer_card) || (pointer_popup && pointer_card)) {
allCard.hide();
}
}
Également ceci écoute dans la méthode prête de VueJS. Ce n'est pas une bonne solution. Je me demande et cherche une meilleure solution avec VueJS.
Que fait 'popuplistener'? Comme où exactement voulez-vous que les utilisateurs cliquent pour ouvrir la popup? – kevguy
Supprime le '[0]' dans l'élément [0] .closest'. '.closest()' est une méthode jQuery. Il doit être utilisé sur un élément jQuery. Utiliser '[0]' obtient l'élément DOM .... Donc la méthode ne fonctionnera pas. –
Ce code fonctionne correctement, mais je ne veux pas utiliser jquery autant que possible @LouysPatriceBessette –