事件对象
注册一个事件,系统就会帮我们生成一个对象记录这个事件触发时候的一些信息
比如触发事件的时候有没有按住某个键,再比如触发这个事件的时候的一些坐标信息
当给选中的元素绑定事件时,可以传入一个参数,该参数就是事件对象
$('div').on('click', function(e) {
console.log(e);
});
坐标
- screenX() / screenY() - 触发事件时鼠标距离屏幕左上角的值
- clientX() / clienY() - 触发事件时鼠标距离页面可视区左上角的值(忽视滚动条)
- pageX() / pageY() - 触发事件时鼠标距离页面左上角的值(如果滚动条滚动了,值将会更大)
阻止
return false
即能阻止事件冒泡也能阻止默认行为
- event.stopPropagation() - 阻止事件冒泡
- event.preventDefault() - 阻止事件的默认行为
其它
- keycode() - 获取键盘按下时按键的代码
发展历程
- 简单事件绑定
click()
不支持同时注册(一次只能注册一种),也不支持动态注册(创建的元素在注册事件之后)
$('div').click(function () {
console.log('鼠标单击事件');
})
bind()
方式注册事件
支持同时注册(一次注册多种),但也不支持动态注册
$('div').bind({
mouseenter: function () {
console.log("鼠标移入事件");
},
click: function() {
console.log("鼠标单击事件");
}
});
3.delegate()
注册事件委托
支持同时注册,也支持动态注册(本质是事件冒泡,因为是给父元素设置事件)
$('body').delegate('div', {
mouseenter: function () {
console.log("鼠标移入事件");
},
click: function() {
console.log("鼠标单击事件");
}
});
on()
注册事件(首选)
jQuery1.7 之后,用 on()
统一了所有事件的处理方式
on 注册简单事件,不支持动态注册
$('div').on('click', function () {
console.log('鼠标单击事件');
})
on 注册事件委托,支持动态注册
$('body').on('click', 'div', function () {
console.log('鼠标单击事件');
})
事件解绑
- unbind() - 从被选元素上移除添加的事件处理程序
- 如果未规定参数会删除指定元素的所有事件处理程序
- undelegate() - 从现在或未来的被选元素上移除事件处理程序
- 如果未规定参数会删除指定元素的所有事件处理程序
- off() - 从被选元素上移除添加的事件处理程序
- 自 jQuery 版本 1.7 起,off() 方法是 unbind()、die() 和 undelegate() 方法的新的替代品
- 如果未规定参数会删除指定元素的所有事件处理程序
触发事件
- trigger() - 触发被选元素上指定的事件以及事件的默认行为
- 可以触发自定义事件
- 不会引起事件的默认行为(比如表单提交)
鼠标事件
mouseover/mouseout 事件在鼠标指针进入被选元素或任意子元素时都会被触发
mouseenter/mouseleave 事件只有在鼠标指针进入被选元素时被触发
- mouseover() - 当鼠标指针位于元素上方时触发
- mouseout() - 当鼠标指针离开元素上方时触发
- mouseenter() - 当鼠标指针穿过元素时触发
mouseleave() - 当鼠标指针离开被选元素时触发
参 数
fucntion 规定事件触发时运行的函数