Javascript Firefox:由HTML选择/选项触发的不需要的点击事件

Javascript Firefox:由HTML选择/选项触发的不需要的点击事件,javascript,jquery,html,forms,firefox,Javascript,Jquery,Html,Forms,Firefox,我有一个select元素,可以从中选择选项。选择选项会触发回调(在我的实际项目中,它是一个函数,用于在页面上创建新元素,并使用ajax调用将内容加载到其中)。我可以在Firefox中通过select的change事件处理程序,或者通过选项s单击事件处理程序(参见下面的我的代码)来完成。当您选择一个选项并单击它时,这一切都可以完美地工作 当您通过单击外部退出选择时,问题开始出现。例如,如果您通过单击打开下拉列表,然后使用键盘上的箭头单步通过一些选项,然后在选择外单击会生成一个选择。更改(这很好)和

我有一个
select
元素,可以从中选择
选项。选择
选项
会触发回调(在我的实际项目中,它是一个函数,用于在页面上创建新元素,并使用ajax调用将内容加载到其中)。我可以在Firefox中通过
select
change
事件处理程序,或者通过
选项
s
单击事件处理程序(参见下面的我的代码)来完成。当您选择一个选项并单击它时,这一切都可以完美地工作

当您通过单击
外部退出
选择时,问题开始出现。例如,如果您通过单击打开下拉列表,然后使用键盘上的箭头单步通过一些
选项,然后在
选择
外单击会生成一个
选择。更改
(这很好)和一个
选项。单击事件(这不是很好,因为没有人单击
选项
)。我仍然可以接受(虽然这个手势意味着放弃元素,而不是选择一个选项),但是当你实际点击一些同样触发事件的东西时(在现实生活中,例如,在页面上创建或销毁元素),它会产生混乱

说到下面的示例代码,我想要实现的是,只需单击一下
div
选项
be
单击
ed,而不要同时单击两者。(我不关心
select.change

我已尝试捕捉和解除绑定
选择
模糊
聚焦
事件,但均无效

如何防止Firefox触发
选项。当用户简单地放弃
选择时,单击

打开select,用键盘上的箭头移动,然后单击div(“单击此div”)在JS控制台上生成以下输出:

select was changed
option1 was clicked
div was clicked
我正在使用Firefox 50.1。jQuery 1.4.2由我要使用的门户提供

代码:

$('.myDiv')
。单击(功能(e){
log(“单击了div”);
返回false;
})
;
$(“.mySelect”)
.更改(功能(e){
log('select已更改');
返回false;
})
;
$(“.mySelect选项”)
。单击(功能(e){
console.log($(this.val()+'已单击));
返回false;
})
;

点击这个div
请选择一个选项
选择1
选择2
选择3

选项标签上的onclick事件在IE、Safari和Chrome的大多数版本上都会失败。

只需将e.preventDefault()添加到function@Eric因为我使用的是jQuery,
returnfalse
应该意味着
preventDefault
。然而,我也试着明确地说出来,但运气不好。显然,问题不在于默认操作,而在于触发事件本身。我怀疑只有一种变通方法才能有所帮助,如果有的话。另一个失败的实验:
offsetX
offsetY
选项。单击
事件在选择框内外都给出相同的常量值<代码>选择。如果
选项
s不能阻止事件冒泡,则单击
也会为偏移量提供相同的常量。进一步的实验表明,问题不是jQuery特有的。如果我去掉所有的JS代码,将
console.log
s放入HTML标记中的
onClick
属性中,Firefox会显示完全相同的行为:
一些其他功能请选择选项1等。
是的,我知道。我这样做完全是为了Firefox。