jQuery 事件机制
-
注册事件:
-
on()
-
bind()
-
on()/bind()的区别
-
bind有三个参数,分别是event,data,function,也就是事件,额外要添加的数据,执行函数。
-
on有四个参数,分别是event,selector,data,function,分别是事件,选择器,额外添加的数据,执行函数。
-
on可以指定具体的子元素,而bind得给每个子元素都添加一个事件
-
on可以绑定没有页面渲染时不存在的dom,bind不可以即不能动态绑定事件
1 $("p").bind("click",function(){ 2 alert("这个段落被点击了。"); 3 }"dbClick",function(){ 4 alert("这个段落被双击了。"); 5 }); 6 $("p").on("click",function(){ alert("段落被点击了。"); });
-
委托事件:
-
delegate()
- 指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
1 $("div").delegate("p","click",function(){ 2 $("p").css("background-color","pink"); 3 }); 4
事件对象even(事件源) even属性如下
-
type: 事件类型,比如click。
-
which: 触发该事件的鼠标按钮或键盘的键。
-
target: 事件发生的初始对象(当前元素)。
-
data: 传入事件对象的数据。
-
pageX: 事件发生时,鼠标位置的水平坐标(相对于页面左上角)。
-
pageY: 事件发生时,鼠标位置的垂直坐标(相对于页面左上角)
each()方法
-
-
each() 方法规定为每个匹配元素规定运行的函数,它可以用来遍历任何一个集合,不管是一个JavaScript对象或者是一个数组,或者是一个JSon对象。
-
$("li").each(function(){
alert($(this).text())
});
-
普通事件与绑定事件
-
普通添加事件的方法不支持添加多个事件,最下面的事件会覆盖上面的,而事件绑定(addEventListener)方式添加事件可以添加多个且支持冒泡与事件的捕获。