复选框上.click和.change之间的区别是什么

qwe*_*ymk 39 javascript checkbox jquery click

我正在四处寻找一个复选框添加一个事件,我想人们会用它.change来设置一个改变事件,但我发现人们正在使用.click

是否有一个原因?它们似乎都适用于点击事件和键盘更改.我错过了什么吗?

如果你不相信我,那就试试吧

Mar*_*ahn 39

onchange在IE中仅在复选框失去焦点时触发.因此,如果你选择它,点击空格几次,标签,你只会得到一个onchange事件,但有几个onclick事件.

注意:这是IE的行为正确(根据规范)和其他浏览器错误的非常非常非常罕见的时期之一.


nav*_*een 6

onclick优先于两个原因onchange.

  1. 当复选框失去焦点(onblur)时,Internet Explorer仅触发onchange事件.所以,onclick更多的是一种跨浏览器的解决方案.

  2. onchange只有在元素失去焦点后才会发生.(你不会看到差异,因为你正在调用警报并且不再关注每一个变化).MDC上的伪代码几乎解释了element.onchange实现.

    control.onfocus = focus;
    control.onblur = blur;
    
    function focus () {
        original_value = control.value;
    }
    
    function blur () {
        if (control.value != original_value)
            control.onchange();
    }
    
    Run Code Online (Sandbox Code Playgroud)