码海拾遗

但行好事,莫问前程

导航

事件

事件驱动:当页面完全加载后,用户通过鼠标或键盘触发页面中绑定事件的元素,即可触发

常用事件:

  

绑定事件

  通过bind()方法为元素绑定事件,可传递三个参数band(type,[data],fn),type表示一个或多个类型的事件名字符串,多个事件用空格隔开;data作为event.data属性值传递一个额外的数据;fn表示绑定到指定元素的函数

  bind({type1:fn1,type2:fn2,...}:将事件和元素绑定

删除事件

  unbind():删除所有事件

  unbind(type):删除指定事件

  unbind(type,fn):删除指定事件的绑定函数

简写事件

  click(fn):单击事件

  dbclick(fn):双击事件

  mousedown(fn):鼠标左键按下事件

  mouseup(fn):鼠标左键弹起事件

  $(window).onload(fn):页面卸载事件

  $(window).resize(fn):文档改变大小事件

  $(window).scroll(fn):滚动条改变事件

  select(fn):文本选定事件

  change(fn):文本改变事件

  submit(fn):表单提交事件,作用对象是form

  mouseover(fn):当鼠标指针位于元素上方时,触发

  mouseout(fn):当鼠标指针离开元素上方时,触发

  mouseenter(fn):当指针进入元素时,触发

  mouseleave(fn):当指针移出元素时,触发

  keydown(fn):键盘按键按下事件,返回键码

  keyup(fn):键盘按键弹起事件,返回键码

  keypress(fn):键盘按键按下事件,返回字符编码

  focus(fn):得到焦点事件,必须作用在当前元素

  blur(fn):失去焦点事件,必须作用在当前元素

  focusin(fn):得到焦点事件,可作用子元素

  foucsout(fn):失去焦点事件,可作用子元素

复合事件

  ready(fn):当DOM加载完毕触发事件

  hover(fn1,fn2):结合mouseenter和mouseleave事件

事件对象:event对象,通过处理函数默认传递接受

  事件对象属性

属性名称 描述 举例
type
事件类型.如果使用一个事件处理函数来处理多个事件, 可以使用此属性获得事件类型,比如click.
$("a").click(function(event) {
            alert(event.type);
            });
target
获取事件触发元素DOM对象
$("a[href=http://google.com]").click(function(event) {
            alert(event.target.href);
            });
data
事件调用时传入额外参数.
$("a").each(function(i) {
            $(this).bind('click', {index:i}, function(e){
            alert('my index is ' + e.data.index);
            });
            });
relatedTarget
对于鼠标事件, 标示触发事件时离开或者进入的DOM元素
$("a").mouseout(function(event) {
            alert(event.relatedTarget);
            });
currentTarget
冒泡前的当前触发事件的DOM对象, 等同于this.
$("p").click(function(event) {
            alert( event.currentTarget.nodeName );
            });

结果:P

pageX/Y
鼠标事件中, 事件相对于页面原点的水平/垂直坐标.
$("a").click(function(event) {
            alert("Current mouse position: " + event.pageX + ", " + event.pageY );
            });
 screenX/screenY
获取显示器屏幕位置的水平/垂直坐标(非jQuery)
$("a").click(function(event) {
            alert("Current mouse position: " + event.screenX + ", " + event.screenY );
            });
clientX/clientY
获取相对于页面视口 的水平/垂直坐标(非Jquery)  
$("a").click(function(event) {
            alert("Current mouse position: " + event.clientX + ", " + event.clientY );
            });
result
上一个事件处理函数返回的值
$("p").click(function(event) {
            return "hey"
            });
            $("p").click(function(event) {
            alert( event.result );
            });

结果:”hey”

timeStamp
事件发生时的时间戳.
var last;
            $("p").click(function(event) {
            if( last )
            alert( "time since last event " + event.timeStamp - last );
            last = event.timeStamp;
            });

 

 which  获取鼠标的左中右键(1,2,3),或键盘的按键

 $('input').bind('mousedown',function(e){

  alert(e.which);

});

altKey/shiftKey/ctrlKey/metaKey  获取是否按下了alt、shift、ctrl或meta键

$('input').bind('click',function(e){

  alert(e.ctrlKey);

});

  冒泡行为:如果在页面中重叠多个元素,并且重叠的这些元素都绑定到同一个事件,就会出项冒泡问题

  阻止冒泡:在函数中使用stopPropagation()方法,可阻止冒泡

  默认行为:页面中的元素存在着许多默认行为,如右键document会出现菜单,点击超链接会打开新页面等等

  阻止默认行为:在函数中使用preventDefault()方法,可阻止默认行为

  阻止默认行为和冒泡:return false;

  isDefalutPrevented():判断是否调用了PreventDefault()方法

  isPropagationStopped():判断是否调用了stopPropagation方法

  stopImmediatePropagation():取消冒泡行为,并且取消该事件的后续事件处理函数

  isImmediatePropagationStopped():判断是否调用了stopImmediatePropagation方法

高级事件:

  模拟操作:模拟用户行为的操作

    trigger(operation):模拟用户的operation操作

    trigger(operation,[data1,data2,...]):data表示传递的数据,数据只有一个时,中括号可省略

    triggerHandle(operation):模拟用户行为,但不执行默认行为

    trigger和triggerHandle区别

      trigger会执行默认行为,triggerHandle不执行默认行为

      trigger会匹配所有元素,triggerHandle只返回第一个元素

      trigger返回JQuery对象,可使用连缀,triggerHandle()返回return值或undefined

      trigger会冒泡,triggerHandle不会冒泡

  命名空间

    在操作后面加上".***",可精确命名事件,方便调用

  事件委托:通过事件冒泡的特性,让子元素绑定的事件冒泡到父元素,然后再进行处理

    方法:live(),默认绑定document元素,不推荐使用,JQ1.4.3以后废用

      作用:1、绑定的是父元素, 只会绑定一次事件,不会导致重复

         2、可动态绑定事件

      delegate():live的替代方法,语义清晰

      object.delegate(element,operation,function):object为绑定父元素对象,element为绑定的子元素,operation为对绑定元素的操作,function为调用的方法

  on、off、one:JQ1.7以后使用

    on:绑定方法

      on(operation[ operation2...],fn):operation绑定元素触发事件,可绑定多个;fn触发函数

      on(operation[ operation2...],data,fn):data传递额外的数据

      on({operation1:fn1,operation2:fn2,...}):多元素触发事件相应的函数

      on(operation,false):阻止默认行为和冒泡行为

      on(operation,element,fn):事件委托,element表示绑定的子元素

    off:解绑方法

      off(operation):移除某一元素的操作

      off(operation,fn):移除某一元素的函数

      off(operation,element,fn):解绑事件委托,element表示绑定的子元素

    one:只触发一次

      one(operation,fn):仅一次事件触发

      one(operation,element,fn):绑定的父元素也只触发一次

    

posted on 2015-05-16 21:53  widrin  阅读(314)  评论(0编辑  收藏  举报