事件机制

事件的在触发后被分为两个阶段,一个是捕获,另一个是冒泡。

但是,大多数浏览器并不都是支持捕获阶段,jQuery也不支持。因此,在事件触发后,往往执行冒泡过程。

所谓的冒泡其实实质是事件执行中的顺序。


在代码中,除了使用stopPropagation()方法阻止事件的冒泡过程,还可以通过语句return false实现停止事件的冒泡过程


页面载入事件ready()

jQuery中ready()方法加载页面,则只要页面的DOM模型加载完毕,就会触发ready()方法。

而JavaScript中的OnLoad()方法必须是页面中的全部元素完全加载到浏览器之后才会触发。

ready()方法的几种写法:

写法1:


$(document).ready(function(){

})




写法2:


$(function(){

})




写法3:


jQuery(document).ready(function(){

})




写法4:


jQuery(function(){

})



绑定事件bind()

可以使用bind()方法进行事件的绑定。

bind()功能是为每个选择元素的事件绑定处理函数,其语法格式如下:

bind(type, [data], fn)



其中参数 type 为一个或多个类型的字符串,如“click”或"change",也可以是自定义类型。

可以被参数 type 调用的类型包括:

blur, focus, load, resize, scroll, unload, click, dbclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error



参数 data 是作为 event.data 属性值传递给事件对象的额外数据对象(很少使用)。

参数 fn 是绑定到每个选择元素的事件中的处理函数。


如果要在一个元素中绑定多个事件,可以将事件用空格隔开。

例如:

$("#btnBind").bind("click mouseout", function(){

})




在jQuery绑定事件时,还可以通过传入一个映射,对所选对象绑定多个事件处理函数

例如:

$(".txt").bind({
  focus:function(){
      // 事件处理代码  
  },
  change:function(){
      // 事件处理代码
  }
})




切换事件 hover() / toggle()

在jQuery事件中,有两个方法用于事件的切换。一个是方法hover(),另一个是方法toggle()。

所谓切换事件,既有两个以上的事件绑定于一个元素,在元素的行为动作间进行切换。

hover()方法

调用jQuery中的hover方法可以使元素在鼠标悬停与鼠标移出的事件中进行切换,该方法在实现运用中,也可以通过jQuery中的事件 mouseenter 与 mouseleave进行替换。

其语法格式为:

hover(over, out)



参数over为鼠标移到元素时触发的函数;参数out为鼠标移出元素时触发的函数。


与下列代码是等价的:

$("a").mouseenter(function(){

})

$("a").mouseleave(function(){

})



$("a").hover(
    function(){

    },
    function(){

    }
)



toggle()方法

在 toggle() 方法中,可以依次调用N个指定的函数,直到最后一个函数,然后重复对这些函数轮番调用(每次单击调用一个函数,顺序循环调用)。

toggle() 方法的功能是每次单击后依次调用函数,其调用的语法格式如下:

toggle(fn, fn2, fn3, ... )



参数 fn, fn2, fn3 ... ...为单击时被依次调用的函数。


移除事件unbind()

通过unbind()方法移除绑定的所有事件或指定某一个事件。

语法格式为:

unbind([type],  [fn])



参数 type 为移除的事件类型, fn 为需要移除的事件处理函数;

如果该方法没有参数,则移除所有绑定事件:如果带有参数 type,则移除该参数所指定的事件类型; 如果带有参数fn,则只移除绑定时指定的函数fn。


其他事件 one() / trigger() / triggerHandler()

方法one()

one()方法功能是为所选的元素绑定一个仅触发一次的处理函数,其调用的语法格式为:

one(type, [data], fn)



参数type为事件类型;参数data为可选参数,表示作为event.data属性值传递给事件对象的额外数据对象;fn为绑定事件时所要触发的函数。


方法trigger() / triggerHandler()

trigger()方法的功能是在所选择的元素上触发指定类型的事件。

其调用的语法格式为:

trigger(type, [data])



参数type为触发事件的类型(可以指定一个自定义事件),参数data为可选项,表示在触发事件时,传递给函数的附加参数。

例如:

var oTxt = $("input");
oTxt.trigger("select");              // 自动选中文本框

oTxt.bind("btn_Click", function(){   // 文本框自定义事件
	
});

oTxt.trigger("btn_Click");           // 自动触发自定义事件



trigger()方法会导致浏览器同名的默认行为的执行。 triggerHandler()方法将会触发指定的事件类型上所有绑定的处理函数,但不会执行浏览器的默认动作