jQuery的事件模型
jQuery的事件模型有以下特点:
统一论事件处理的各种方法
允许在每个元素上位每个事件建立多个处理程序
统一了Event对象的传递方法
为事件管理和操作提供了统一的方法
1、绑定
bind方法绑定 :bind(type,[data],fn)
快捷方式绑定:jQuery定义了20个快捷方法,与2级事件模型中的时间类型意义对应
blur() focus() mousedown() resize()
change() keydown() mousemove() scroll()
click() keypress() mouseout() select()
dbclick() keyup() mouseover() submit()
error() load() mouseup() unload()
使用one绑定:执行一次相应后就消失
绑定多个事件:$("div").bind("mouseover mouseout",function(event){...});
2、注销
注销所有: $("p").unbind();
注销指定类型的事件: $("p").unbind("mouseover");
注销特定的事件处理函数:$("p").unbind("mouseover",e);
3、Event对象
type target relatedTarget
altKey ctrlKey shiftKey metalKey
which
pageX pageY screenX screenY
data
preventDefault() stopPropagation
4、事件触发
trigger(type,[data])
trigger也会触发同名的浏览器默认行为,如使用trigger()触发一个submit时间,同样会使浏览器提交表单。如果要阻止默认行为,可以在事件处理函数中设置返回值为false
triggerHandler()是对trigger()的补充,但有以下区别
不会触发浏览器的默认事件
不会触发浏览器的默认事件
只触发jQuery对象集合中第一个元素的事件处理函数
反回的是事件处理函数的返回值,而不是jQuery对象
快捷触发: blur() change() click() dbclick() error() focus()
keydown() keyup() keypress()
select() submit()
5、事件切换
使用toggle()切换:为click事件banging函数,每次单击依次调用
可以包含多个函数形参,顺序触发
hover()切换:模仿悬停事件,既输本移动、移出一个对象的方法
mouseout事件有一个很严重的错误:如果鼠标移动到当前元素包含的子元素上时,将会触发当前元素的mouseout和mousover事件,由于jQuery的是bind() mouseover() mouseout()都是在原生事件的直接包装,因此也会出现上述问题,而hover()修正了该错误
6、事件委派
live():给当前以及未来将会匹配的元素绑定一个事件处理函数,也能房顶自定义事件。用法与bing()相同
与bind()的区别:
bind()只为当前匹配的元素绑定,live()还为后面动态生成的元素绑定
bind()可以绑定多个时间,live()只能一次绑定一个事件
7、取消事件委派
die(),类似于unbind()
不带参数,移出所有绑定的live事件
设置type参数:移除对应的Live事件
同时指定了第二个参数:只移出指定事件的处理方法
8、自定义事件
触发自定义事件相当于调用自定义函数

浙公网安备 33010602011771号