【发布时间】:2013-03-27 09:16:54
【问题描述】:
嗯,就是这样。
$('.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))
}
当我单击下拉按钮时,openDropdown 函数会执行一次,但是当我使用 Tab 键到达按钮并按 Enter 时,该函数会被调用两次。猜猜这与链接有关,但我承认我是新手,并不完全理解 jQuery 设计模式。我当然可以在 keydown 处理程序中调用该函数两次,这样可以解决问题,但是.. 你知道 :)
您能否解释一下代码有什么问题以及导致这种行为的原因?
【问题讨论】:
-
这不是因为您有 2 个事件侦听器 - 一个用于 keydown(当您按下回车键时会触发),另一个用于单击按钮时(我猜这是您在按回车)