4.2.3 jQuery事件实例的统一属性
翻译之前,我说明一下,原文是inspecting event instance,我个人觉得这样定义不确切,或者说是理解起来很麻烦,本节主要是说明,jQuery传递进来的参数我们不考虑浏览器可以应用那些属性,所以我就改成这样的标题。
当我们用bind给一个元素绑定一个事件的时候,bind函数将clone一个浏览器的事件,以第一个参数传递给我们要处理的回调函数,当然在符合标准(W3C)的浏览器下,属性都很统一,但是在IE这样的浏览器下的时候,尤其在IE7之前的版本他有自己的特有属性,特殊的属性使用,需要我们在回调函数中自己定义,下边就是统一属性的说明列表:
属性 | 说明 |
altKey | 当按下Alt键的时候为true,否则为false |
ctrlKey | 当按下Ctrl键的时候为true,否则为false |
data | 调用bind的时候传递的第二个参数data |
keyCode | 键值 |
metaKey | 当按下meta键的时候为true,否则为false |
pageX | 鼠标的横坐标,相对页面 |
pageY | 鼠标的纵坐标,相对页面 |
relatedTarget | 当前鼠标所在焦点的元素对象 |
screenX | 鼠标的横坐标,相对屏幕 |
screenY | 鼠标的纵坐标,相对屏幕 |
shiftKey | 当按下Shif键的时候为true,否则为false |
target | 被触发事件的元素对象 |
type | 事件类型 |
which | 键盘按键的类型,1:表示左键。2:表示滑轮。3:表示右键,比如左边shift和右边shift |
重要的提示:keypress事件是一个不可靠事件,如果我们要监听键盘操作,最好使用keydown和keyup,举个例子:左方向键的keycode是37,在任何浏览器中keyup和keydown的时候都是可靠的,都是返回37,但是在Sasafi浏览器中使用keypress的时候返回的则不是37。
如果需要一个可靠的监听,那就要配合which属性,一般我们使用keyup,比如我们按下a或者A的时候,keycode返回都是65,这样我们用一个keycode就能确定是那个键按下去了,但是shift就不行了,因为他有左边和右边,就需要加which,做一区分。
本身传递过来的事件属性不止上边说明的这些,还有一些控制事件的方法,比如事件冒泡,还有一些浏览器的特殊熟悉,还需要我们进一步挖掘,下一节我们就讲jQuery下的是事件冒泡。