jquery学习8_事件机制
点击事件的注册
// 普通click处理
$("#btn").click(function () {
$("<p>我是新增加的p元素</p>").appendTo("div");
})
// bind绑定事件
$("p").bind("click,mouseenter",function () {
alert("hahah");
})
// bind绑定多个处理
$("p").bind({
click:function () {
alert("呵呵");
},
mouseenter:function () {
alert("嘿嘿");
}
})
代理事件注册
上面例子当中,我们对新增加的p标签的点击事件是注册不成功的(js只执行一遍)。我们需要采用delegate
// 第一个参数:selector,要绑定事件的元素
// 第二个参数:事件类型
// 第三个参数:事件处理函数
$("div").delegate("p", "click", function(){
//为 .parentBox下面的所有的p标签绑定事件
});
这里委托的意思是:将p标签的点击事件委托给我们div。也就是子元素的点击事件冒泡给div,再由div决定谁去执行点击事件。其实点击事件是注册给div这个父元素的
On的事件点击
jQuery1.7之后,jQuery用on统一了所有事件的处理方法。
// 第一个参数:events,绑定事件的名称可以是由空格分隔的多个事件(标准事件或者自定义事件)
// 第二个参数:selector, 执行事件的后代元素(可选),如果没有后代元素,那么事件将有自己执行。
// 第三个参数:data,传递给处理函数的数据,事件触发的时候通过event.data来使用(不常使用)
// 第四个参数:handler,事件处理函数
$(selector).on(events[,selector][,data],handler);
// 表示给$(div)绑定事件,并且由自己触发,不支持动态绑定。
$(div).on( "click", function() {});
// 表示给$(div)绑定代理事件,当必须是它的内部元素p才能触发这个事件,支持动态绑定
// 给div内部元素p进行事件绑定,类似于委托事件
$("div").on("click","p",function () {
alert("ehhehe ")
})
注意:在既有自己的事件又有委托事件的时候,先执行委托事件。
事件解绑
// 解绑匹配元素的所有事件
$(selector).off();
// 解绑匹配元素的所有click事件
$(selector).off("click");
事件触发
$(selector).trigger("click");
传入参数至绑定事件中
// event传入附加内容
$("p").on("click",100,function (e) {
alert(e.data);
})
//screenX和screenY 对应屏幕最左上角的值
//clientX和clientY 距离页面左上角的位置(忽视滚动条)
//pageX和pageY 距离页面最顶部的左上角的位置(会计算滚动条的距离)
//event.keyCode 按下的键盘代码
//event.stopPropagation() 阻止事件冒泡行为
//event.preventDefault() 阻止浏览器默认行为
//return false:既能阻止事件冒泡,又能阻止浏览器默认行为。