我有一个对复杂导航 UI 很重要的功能,所以我希望它可以通过键盘访问。我正在使用单击和焦点编写我的处理程序:
$('.mycoolnavbutton').on("click focus", function() {
// do an animated reveal
});
这是问题所在:正如所写,我在 Firefox 中得到了双重执行(和不稳定的行为),因为点击事件触发了焦点事件。一切都执行(和console.logs)两次。(Webkit 只执行一次。)
我突然想到我可以将点击处理程序“管道”到焦点:
$('.mycoolnavbutton').on("click", function(event) {
event.preventDefault();
this.focus();
});
$('.mycoolnavbutton').on("focus", function() {
// do an animated reveal
});
但这似乎真的很奇怪且容易出错。我确信我不是第一个遇到这种困境的人。标准解决方案是什么?