jQuery 事件和动画总结

加载DOM
$(window).load() 等价于 window.onload 事件


$(document).ready() 相当于window.onload事件,但有些区别:
  (1)执行时机:
  window.onload 是在网页中所有元素(包括元素的所有关联文件)完全加载后才执行
  $(document).ready() 是在DOM完全就绪时就可以被调用,此时,并不意味着这些元素关系的文件都已经下载完毕
  
  (2)多次使用:可以在同一个页面注册多个$(document).ready()事件
  (3)简写方式:可以缩写成 $(function(){ })  或  $().ready()
  
·事件绑定
当文档装载完成后,可以通过bind()方法,为特定的元素进行事件的绑定,可重复多次使用
  bind( type, [data, ] fn );
  type:指事件的类型: 
    blur(失去焦点)、focus(获得焦点)
    load(加载完成)、unload(销毁完成)
    resize(调整元素大小)、scroll(滚动元素)
    click(单击元素事件)、dbclick(双击元素事件)
    mousedown(按下鼠标)、mouseup(松开鼠标)
    mousemove(鼠标移过)、mouseover(鼠标移入)、mouseout(鼠标移出)
    mouseenter(鼠标进入)、mouseleave(鼠标离开)
    change(值改变)、select(下拉框索引改变)、submit(提交按钮)
    keydown(键盘按下)、keyup(键盘松开)、keypress(键盘单击)
    error(异常)
  data:指事件传递的属性值,event.data 额外传递给对象事件的值
  fn:指绑定的处理函数,在此函数体内,$(this)指携带相应行为的DOM元素


·合并事件
hover(enter,leave):鼠标移入执行enter、移出事件执行leave
$("#myDiv").hover( function(){
    $(this).css("border", "1px solid black");0
}, function(){
    $(this).css("border", "none");
});


toggle(fn1,fn2,...fnN):鼠标每点击一次,执行一个函数,直到最后一个后重复
$("#myDiv").toggle( function(){
    $(this).css("border", "1px solid black");0
}, function(){
    $(this).css("border", "none");
});


·事件冒泡
下面的例子,BODY元素下有DIV元素,DIV元素下有SPAN元素,分别将三种元素都注册click事件。
那么,click事件会按照DOM的层次结构,像水泡一样不断向上直到顶端,所以称之为事件冒泡。
<body><div><span>我是SPAN我怕谁</span></div></body>
$("span").bind("click", function(){ alert('span click'); });
$("div").bind("click", function(){ alert('div click'); });
$("body").bind("click", function(){ alert('body click'); });


·阻止冒泡
解决这个问题的办法是:在SPAN执行完click事件后,停止事件冒泡。
$("span").bind("click", function(event){
    alert('span click');
    event.stopPropagation(); //停止冒泡
});


·阻止默认行为
提交按钮在提交前做相应的逻辑判断,当不满足时
$("#btnSubmit").bind("click", function(event){
    event.preventDefault(); //阻止默认行为 相当于return false;
});


·事件对象的属性
$("#myDiv").bind("click", function(event){ });
event.type() //返回:click
event.target() //获取当前元素
event.relatedTarget() //引发事件的元素
event.pageX()/event.pageY() //获取鼠标相对于页面的X和Y坐标
event.which() //在单击事件中获取到对应的按键 鼠标左中右分别是123
event.metaKey() //获取操作中的相关功能键(ctrl/alt/shift)


·移除事件
$("#myDiv").bind("click", fn1 = function(){
    alert("function1");
}).bind("click", fn2 = function(){
    alert("function2");
}).bind("click", fn3 = function(){
    alert("function3");
});
$("#myDiv").unbind(); //移除id为myDiv的元素的所有事件
$("#myDiv").unbind("click"); //移除id为myDiv的元素的所有click事件
$("#myDiv").unbind("click",fn1); //移除id为myDiv的元素的名称为fn1的click事件


·一次性事件:绑定的事件执行一次后自动移除
$("#myDiv").one("click", [data], function(){
    alert("function1");
});


·触发事件
$("#btn").trigger("click", [data]); //代码方式触发click事件
$("#btn").click(); //另一种简写方式


·事件命名空间
$("#myDiv").bind("click.hello", function(){
    alert("function1");
});
$("#myDiv").bind("click", function(){
    alert("function1");
})
$("div").unbind("click"); //两个事件都被移除
$("div").unbind(".hello"); //只移除第一个
$("div").unbind("click!"); //只移除第二个(注意感叹号,指没有名字空间的)


·JQuery中的动画
$("div").hide(); //隐藏所有DIV元素,相当于sytle="display:none"
$("div").show(); //显示所有DIV元素


$("div").hide(1000); //一秒内隐藏所有DIV元素,其它参数还有:slow(600) normal(400) fast(200)
$("div").show(1000); //一秒内显示所有DIV元素


$("div").fadeOut(); //降低元素的不透明度,直至消失(支持速度参数,不会改变宽高)
$("div").fadeIn(); //升高元素的不透明度,直至显示


$("div").slideUp(); //由下至上收缩元素,直至消失(支持速度参数)
$("div").slideDown(); //由上至下展开元素,直至显示


·自定义动画animate
$(elem).animate(params, speed, callback);
params:样式属性及值的映射 {protected:"value", protected:"value"}
speed: 速度参数
callback: 动画完成后执行函数,可选


$("#myDiv").animate({left:"500px"}, 2000); //两秒内ID为myDiv的元素移至左边距500px的位置
$("#myDiv").animate({left:"+=500px"}, 2000); //同上,支持累加、累减
$("#myDiv").animate({top:"200px", left:"+=500px"}, 2000); //同上,多重动画,同时执行


$("#myDiv").animate({opacity:"0.5"}, 1000) //先变成50%透明
           .animate({top:"500px"}, 500) //移至离顶端500px
           .animate({left:"500px"}, 500) //移至离左边500px
           .fadeOut(1000); //显示出来 (四个动作为队列,一步步执行)


$("#myDiv").stop([cleanQuene] [,gotuEnd]); //停止动画,参数为boolean


$("#myDiv").is(":animate") //判断元素是否在执行动画


·其它动画
$("#myDiv").toggle(); //显示与隐藏元素
$("#myDiv").slideToggle(); //展开与收缩元素
$("#myDiv").fadeTo(1000, 0.2); //一秒内将元素透明度调整到20%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值