Javascript 谷歌浏览器&x27;s bug onclick of<;选择>;元素

Javascript 谷歌浏览器&x27;s bug onclick of<;选择>;元素,javascript,html,google-chrome,webkit,click,Javascript,Html,Google Chrome,Webkit,Click,HTML: 他们中没有一个是在Chrome上工作的,似乎只是Chrome而已 发生了什么事 下面是jsfiddle:在select元素上放置一个事件处理程序,而不是选项,它将在所有浏览器中工作。使用change和keyup事件: document.getElementById('about').onclick = function(){ alert('normal onclick'); } $("#about").click(function(){ alert("jquery c

HTML:

他们中没有一个是在Chrome上工作的,似乎只是Chrome而已

发生了什么事


下面是jsfiddle:

select
元素上放置一个事件处理程序,而不是
选项
,它将在所有浏览器中工作。使用
change
keyup
事件:

document.getElementById('about').onclick = function(){
    alert('normal onclick');
}
$("#about").click(function(){
    alert("jquery click")
});

为什么
更改
键控
事件都会发生?
change
事件处理鼠标交互,当您使用箭头键或其他键在选择器中上下导航时,
keyup
使选择器做出响应

或者,您可以省略
keyup
,只监听
change
事件。然后,如果打开选择器并使用光标键上下导航,则在按Enter键之前不会发生任何事情。这将触发一个
change
事件

在许多情况下,在使用键盘上下浏览列表时,向用户提供即时反馈会更有帮助,而听
change keyup
可以做到这一点

为什么要更改
而不是单击
?您可以使用这两个选项中的任何一个,但只要单击,就会触发
单击事件,即使该值实际上没有更改。OTOH,您可能希望即使用户只单击已选择的选项,事件也会触发,因此在这种情况下,
单击
事件会更好

实际上,在对它进行了更多的测试之后,
单击
更改
问题相比,还有更多的问题。普通鼠标与选择列表的交互允许两种稍微不同的使用方式:

  • 在选择器上按鼠标,按住它,将其滚动到一个选项上,最后将其释放

  • 在选择器上按下鼠标并将其释放。选择器将打开以显示选项。将鼠标滚动到选项上(此时按钮未按下),最后单击某个选项上的按钮

  • 如果您收听的是
    单击
    事件,而不是
    更改
    ,则在案例2中,事件会在初始单击和选择选项的最后单击时触发两次。因此,您可以使用
    单击
    更改
    ,具体取决于您是希望同时单击还是仅选择最终选项


    我必须补充一点,我没有在这里彻底测试
    单击
    ,但是我已经非常彻底地测试了
    更改
    更改keyup
    ,所以我更信任这些。在
    选择
    元素而不是
    选项
    上放置一个事件处理程序,它将在所有浏览器中工作。使用
    change
    keyup
    事件:

    document.getElementById('about').onclick = function(){
        alert('normal onclick');
    }
    $("#about").click(function(){
        alert("jquery click")
    });
    

    为什么
    更改
    键控
    事件都会发生?
    change
    事件处理鼠标交互,当您使用箭头键或其他键在选择器中上下导航时,
    keyup
    使选择器做出响应

    或者,您可以省略
    keyup
    ,只监听
    change
    事件。然后,如果打开选择器并使用光标键上下导航,则在按Enter键之前不会发生任何事情。这将触发一个
    change
    事件

    在许多情况下,在使用键盘上下浏览列表时,向用户提供即时反馈会更有帮助,而听
    change keyup
    可以做到这一点

    为什么要更改
    而不是单击
    ?您可以使用这两个选项中的任何一个,但只要单击,就会触发
    单击事件,即使该值实际上没有更改。OTOH,您可能希望即使用户只单击已选择的选项,事件也会触发,因此在这种情况下,
    单击
    事件会更好

    实际上,在对它进行了更多的测试之后,
    单击
    更改
    问题相比,还有更多的问题。普通鼠标与选择列表的交互允许两种稍微不同的使用方式:

  • 在选择器上按鼠标,按住它,将其滚动到一个选项上,最后将其释放

  • 在选择器上按下鼠标并将其释放。选择器将打开以显示选项。将鼠标滚动到选项上(此时按钮未按下),最后单击某个选项上的按钮

  • 如果您收听的是
    单击
    事件,而不是
    更改
    ,则在案例2中,事件会在初始单击和选择选项的最后单击时触发两次。因此,您可以使用
    单击
    更改
    ,具体取决于您是希望同时单击还是仅选择最终选项


    我必须补充一点,我没有在这里彻底测试
    点击
    ,但我已经非常彻底地测试了
    更改
    更改键控
    ,所以我更信任这些。我不认为你可以为Chrome的
    添加点击处理程序。我肯定在什么地方读过。将尝试查找参考。这是否仅发生在Chrome上?您的代码在IE9Old文章中有效,但我找到了它-尽管他们的演示中有一个Chrome可用的
    onclick
    …可能是Chrome的重复项,但我认为您无法为Chrome的
    添加单击处理程序。我肯定在什么地方读过。将尝试查找参考。这只发生在Chrome上吗?您的代码在IE9Old文章中有效,但我找到了它-尽管他们的演示中有一个Chrome可用的
    onclick
    …可能与。。。请阅读以上评论,我不是在问怎么做。。。我在问这是不是一个错误。。。不知何故,我没有足够的声誉来投票否决奥米切尔,你确定当使用键盘选择选项时,
    更改
    事件没有被触发吗?“好东西,谢谢……我想我只是在单击时检查选择本身的值”->这是我的一个选择comments@yefrem-我添加了一些关于事件的细节。使用光标键或键时不会触发
    change
    事件
    $('#page').on( 'change keyup', function() {
        var selected = this.value;
        if( selected == 'about' )
            alert( 'About!' );
    });