事件
一、页面载入
js加载的时机
1、dom加载完毕(把script的代码放到最后),比如使用js使页面的背景颜色变为蓝色,这时候就不用等到把页面的所有资源都加载出来,而是dom加载完就执行
$(function(){
//这里的所有代码都是等到dom加载完毕才开始执行
)
2、页面所有资源加载完毕(window.onload里面),对于有图片的事件
$(window).load(function(){
//这里所有代码是等到页面资源全部加载完毕
)
二、事件处理
jQuery中对于直接绑定的一些事件,没有解绑事件的方法,所以在进行绑定的时候用另一种方法进行绑定,即
bind();绑定事件
unbind();解除绑定事件
三、委托事件
delegate()其中有4个参数
<div>
<p></p>
</div>
S('div').delegate('p','click',function(){alert('呵呵');}
此时是给div注册一个委托事件,但是最终执行的是p
第一个参数:事件最终由谁来执行
第二个参数:事件的类型
第三个参数:函数,要做什么
实际上p元素一直都是没有事件,当你点击p的时候,把结果冒泡到div上,此时触发了div的委托事件,div发现p符合要求,就给了p一个事件。就算是动态增加的p,也是没有事件,一直都是按照上面的来实现。不管你是不是新增加,都是给div注册的事件,和p没有关系。
委托事件不是自己执行的,是给最终的子元素执行的,一定要给父元素注册委托事件
四、on事件
jq中用on统一了所有的注册事件,可以给元素注册简单事件,也可以注册委托事件。
使用on注册简单事件
$('p').on('click',function(){alert('呵呵')});
使用on注册委托事件,这里的委托事件原理和委托事件相同
$('p').on('click','p',function(){alert('呵呵')});
on()里面有四个参数,第三个参数是date,可以给date参数传一个值,可以在事件里面使用e.date属性来获取date。没有太大用。
五、事件的执行顺序
p自己有一个事件
使用p的父元素div给p注册了委托事件
div自己有一个事件
此时点击p,事件的执行顺序是,先执行p自己有的事件,然后执行div给p委托事件,最后执行div有的事件。
所以,如果自己本身有事件,还注册了委托事件,先执行自己的委托事件,再执行自己的事件。
六、移除事件
$('p').on('click mouseover',function(){
alert('呵呵');
})
移除事件时,移除谁,就往off()里面传谁,如果不传,就是全部删除
$('p').off('click');
七、触发事件trigger()
原始写法:
$('p').on('click',function(){
alert('呵呵');
})
$('btn').on(function(){
//原始写法:$('p').click();
//现在写法:$('p').trigger('click');
})
八、阻止事件冒泡和浏览器默认行为
阻止事件冒泡 e.stopPaopagation()。
阻止浏览器默认行为,使用事件对象调用preventDefault();他就不会冒泡给自己的上一级
$('p').on('click',function(e){
alert('呵呵');
e.preventDefault();
或者不传事件对象,直接
return false;
})