1.1 jQuery中的focus()获取焦点事件与blur()失去焦点事件(鼠标事件)

1. focus() 事件
            当元素获得焦点时,触发focus事件。可以通过鼠标点击或者键盘上的TAB导航触发。这将触发所有绑定的focus函数
        2. blur() 事件
            当元素失去焦点时触发 blur 事件。
            这个函数会调用执行绑定到blur事件的所有函数,包括浏览器的默认行为。可以通过返回false来防止触发浏览器的默认行为。blur事件会在元素失去焦点的时候触发,既可以是鼠标行为,也可以是按tab键离开的

1.2 jQuery中的focusin()事件与focusout()事件

3. focusin() 事件
            当元素获得焦点时,触发 focusin 事件。
            focusin事件跟focus事件区别在于,他可以在父元素上检测子元素获取焦点的情况。
        4. focusout() 事件
            当元素失去焦点时触发 focusout 事件。
            focusout事件跟blur事件区别在于,他可以在父元素上检测子元素失去焦点的情况

1.3 jQuery中的表单事件 change()事件

<input>元素,<textarea>和<select>元素的值都是可以发生改变的,开发者可以通过change事件去监听这些改变的动作
        input元素
            监听value值的变化,当有改变时,失去焦点后触发change事件。对于单选按钮和复选框,当用户用鼠标做出选择时,该事件立即触发。
        select元素
            对于下拉选择框,当用户用鼠标作出选择时,该事件立即触发
        textarea元素
            多行文本输入框,当有改变时,失去焦点后触发change事件

1.4 jQuery中的表单事件 select()事件

当textarea或文本类型的input元素中的文本被选择时,会发生 select 事件。
       这个函数会调用执行绑定到select事件的所有函数,包括浏览器的默认行为。
       可以通过在某个绑定的函数中返回false来防止触发浏览器的默认行为。

1.5 jQuery表单事件中的 submit()事件

提交表单是一个最常见的业务需求,比如用户注册,一些信息的输入都是需要表单的提交。
        同样的有时候开发者需要在表单提交的时候过滤一些的数据、做一些必要的操作
        (例如:验证表单输入的正确性,如果错误就阻止提交,从新输入)此时可以通过submit事件,监听下提交表单的这个动作
        使用上非常简单,与基本事件参数处理保持一致

        这里需要特别注意:
            form元素是有默认提交表单的行为,如果通过submit处理的话,需要禁止浏览器的这个默认行为
            <form onsubmit="return false;"></form>,jQuery中可以直接在函数中最后结尾return false即可

1.6 事件对象:Query事件对象的属性和方法

事件对象的属于与方法有很多,但是我们经常用的只有那么几个,这里我主要说下作用与区别
        event.type:获取事件的类型
            触发元素的事件类型
            $("a").click(function(event) {
              alert(event.type); // "click"事件
            });
        event.pageX 和 event.pageY:获取鼠标当前相对于页面的坐标
            通过这2个属性,可以确定元素在当前页面的坐标值,鼠标相对于文档的左边缘的位置(左边)与 (顶边)的距离,简单来说是从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化
        event.preventDefault() 方法:阻止默认行为
            这个用的特别多,在执行这个方法后,如果点击一个链接(a标签),浏览器不会跳转到新的 URL 去了。我们可以用 event.isDefaultPrevented() 来确定这个方法是否(在那个事件对象上)被调用过了
        event.stopPropagation() 方法:阻止事件冒泡
            事件是可以冒泡的,为防止事件冒泡到DOM树上,也就是不触发的任何前辈元素上的事件处理函数
        event.which:获取在鼠标单击时,单击的是鼠标的哪个键
            event.which 将 event.keyCode 和 event.charCode 标准化了。event.which也将正常化的按钮按下(mousedown 和 mouseupevents),左键报告1,中间键报告2,右键报告3
        event.currentTarget : 在事件冒泡过程中的当前DOM元素
            冒泡前的当前触发事件的DOM对象, 等同于this.
        this和event.target的区别:
            js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素;
        .this和event.target都是dom对象
            如果要使用jquey中的方法可以将他们转换为jquery对象。比如this和$(this)的使用、event.target和$(event.target)的使用;

1.7 jQuery键盘事件 keydown()与keyup()事件

鼠标有mousedown,mouseup之类的事件,这是根据人的手势动作分解的2个触发行为。
        相对应的键盘也有这类事件,将用户行为分解成2个动作,键盘按下与松手,针对这样的2种动作,
        jQuery分别提供了对应keydown与keyup方法来监听

        - keydown()事件
            当键盘或按钮被按下时,发生keydown事件。
        - keyup()事件
            当按钮被松开时,发生keyup事件。它发生在当前获得焦点的元素上。

1.8 jQuery键盘事件 keypress()事件
在input元素上绑定keydown事件会发现一个问题:
注意:每次获取的内容都是之前输入的,当前输入的获取不到

keydown事件触发在文字还没敲进文本框,这时如果在keydown事件中输出文本框中的文本,
       得到的是触发键盘事件前的文本,而keyup事件触发时整个键盘事件的操作已经完成,
       获得的是触发键盘事件后的文本

       当浏览器捕获键盘输入时,还提供了一个keypress的响应,这个跟keydown是非常相似

       keypress事件与keydown和keyup的主要区别
            只能捕获单个字符,不能捕获组合键
            无法响应系统功能键(如delete,backspace)
            不区分小键盘和主键盘的数字字符
            总而言之,

        KeyPress主要用来接收字母、数字等ANSI字符,
        而 KeyDown 和 KeyUP 事件过程可以处理任何不被 KeyPress 识别的击键。
        诸如:功能键(F1-F12)、编辑键、定位键以及任何这些键和键盘换档键的组合等。

1.9 事件的绑定和解绑 on()的多事件绑定

之前学的鼠标事件,表单事件与键盘事件都有个特点,就是直接给元素绑定一个处理函数,
        所有这类事件都是属于快捷处理。翻开源码其实可以看到,所有的快捷事件在底层的处理都是通过一个"on"方法来实现的。
        jQuery on()方法是官方推荐的绑定事件的一个方法。
        基本用法:on(events,[selector],[data],fn)  在选择元素上绑定一个或多个事件的事件处理函数。

        最常见的给元素绑定一个点击事件,对比一下快捷方式与on方式的不同
        $("#elem").click(function(){})  //快捷方式
        $("#elem").on('click',function(){}) //on方式
        最大的不同点就是on是可以自定义事件名,当然不仅仅只是如何,继续往下看
            多个事件绑定同一个函数
            $("#elem").on("mouseover mouseout",function(){ });
            通过空格分离,传递不同的事件名,可以同时绑定多个事件