Eh bien, c'est un peu ce qui se passe.jQuery tir événement de clic sans un clic
$('.js-custom-dropdown').find('.custom-dropdown-unfolded').toggle();
$('.custom-dropdown-btn, .custom-dropdown-btn-unfolded').keydown(function(event){
if (event.keyCode === 13) {
openDropdown($(this));
}
}).click(function(){
openDropdown($(this));
});
function openDropdown (element){
element.parents('.js-custom-dropdown').find('.custom-dropdown-unfolded').toggle();
console.log($(this))
}
Lorsque je clique sur le bouton déroulant, la fonction openDropdown
est exécutée une fois, mais quand je Tab mon chemin vers le bouton et appuyez sur Entrée, la fonction est appelée deux fois. Je suppose que cela a quelque chose à voir avec le chaînage, mais j'avoue que je suis nouveau dans ce domaine et que je ne comprends pas complètement les modèles de conception de jQuery. Je pourrais de cource appeler la fonction deux fois dans keydown
gestionnaire et cela résoudrait le problème, mais .. vous savez :)
Pourriez-vous s'il vous plaît expliquer ce qui ne va pas avec le code et ce qui provoque un tel comportement?
est-ce pas parce que vous avoir 2 écouteurs d'événement - un pour le clavier (qui se déclenchera lorsque vous appuyez sur Entrée) et l'autre pour quand le bouton est cliqué (ce que je suppose est ce que vous faites lorsque vous appuyez sur Entrée) – Pete