我有一个select
元素,option
个可供选择。选择option
会触发回调(在我的真实项目中,它是一个在页面上创建新元素并使用ajax调用将内容加载到其中的函数)。我可以通过select
的{{1}}事件处理程序或change
s'option
事件处理程序在Firefox中执行此操作(请参阅下面的代码)。除了选择一个选项并单击它之外,这一切都可以完美地运行。
当您通过点击外部click
离开时,问题就开始了。例如,如果您通过单击打开下拉列表,然后使用键盘上的箭头单步执行某些select
,则在option
外单击会生成select
(这很好) )和select.change
事件(由于没有人点击option.click
,因此不太好。)我仍然可以(尽管这个手势意味着放弃元素而不是选择一个选项),但当你实际点击也会触发事件的东西时(在现实生活中,例如,在页面上创建或销毁元素) ,它会产生一团糟。
说到下面的示例代码,我想要实现的是,通过一次点击,option
或div
成为option
,而且两者都没有。 (我不关心click
。)
我已经尝试了select.change
的{{1}}和blur
事件的抓取和取消绑定,但无济于事。
当用户只是放弃focusout
时,如何阻止Firefox触发select
?
打开选择,使用键盘上的箭头移动,然后单击div(“单击此div”)会在JS控制台上生成以下输出:
option.click
我正在使用Firefox 50.1。 jQuery 1.4.2由我要使用的门户提供。
代码:
select
select was changed
option1 was clicked
div was clicked