前端学习笔记Web前端之路JavaScript

锋利的jQuery——读书笔记四 jQuery中的事件和动画

2017-02-28  本文已影响71人  小夫特

jQuery的事件处理机制,增强了事件的处理能力,链式操作使得动画更加的流畅和方便。封装的方法让我们不用去考虑处理js的浏览器兼容

jQuery中的事件

1. readyload 事件

$(document).ready()方法。DOM就绪就会被执行。
DOM树解析完毕,但是图片可能未加载完,图片的高度和宽度属性不一定有效

$(window).load(function(){ }) 方法,将处理函数绑定给window对象,则会在所有内容加载完毕后触发。可以绑定在元素上,元素加载完后执行

readyload 都可以多次使用

2. 事件绑定(on)

on(events,[selector],[data],fn)
events : 事件类型 blur、focus、click、mouseover等等
selector: 筛选元素
data :可选参数,传递给事件对象的额外数据对象
fn :事件处理函数

$(this) jQuery代码中的关键词,在处理函数内,this 引用的是携带相应行为的DOM元素

3. 合成事件

jQuery有两个合成事件,hover()toggle() 方法

  1. hover() 方法
    hover(enter,leave);
    模拟光标悬停事件,光标移动到元素上时,触发enter 函数,光标移出元素,触发 leave 函数

  2. toggle() 方法
    toggle(fn1,fn2,···,fnN) (1.9版本后取消了这个方法)
    模拟鼠标连续单击事件,第一次单击触发函数 fn1,第二次单击触发函数 fn2,直到最后一个,随后单击重复对这几个函数轮番调用

    toggle另一个作用,切换元素的可见状态

4. 事件冒泡

冒泡: **
假设网页上有两个元素,
div** 包裹着 span ,都绑定了click事件,body 也绑定了click 事件。当点击** span** 元素时,也单击了div和 ** body** ,会按照向上冒泡的顺序响应click 事件

停止事件冒泡: stopPropagation()

$('span').on('click',function(event){
  alert("span 被点击了");
  event.stopPropagation(); // 停止事件冒泡
});

这里对IE 和 其他浏览器的 封装,不用去使用js里针对IE 需要单独使用event.cancekBubble=true

**阻止默认行为: preventDefault **
例如默认鼠标右键点击菜单的显示,表单提交按钮的在信息错误时取消提交等等
event.preventDefault

注:如果想同时对事件对象停止冒泡和默认行为,可以在事件处理函数中返回false
return false

5. 事件对象的属性

jQuery 对事件对象常用的属性进行了封装,使得事件处理在各大浏览器下都可以正常允许而不需要进行浏览器类型判断

6. 模拟操作

模拟用户操作,例如打开页面就触发click事件 而不是需要用户主动去点击

trigger 常用模拟

$('#btn').trigger('click');
//等价于
$('#btn').click();
//触发自定义事件 myClick 自定义事件名
$('#btn').trigger('myClick');

trigger 传递数据
trigger(type,[data])
trigger方法触发事件后,会执行浏览器默认操作。使用triggerHandler方法取消默认操作

jQuery中的动画

jQuery 做动画要就在标准模式下,否则可能会引起动画抖动

1.show 和 hide 方法

**hide: ** 在将元素的display 属性设置为 none 之前,先记住原先的display属性值

**show : ** 根据之前记录的display 属性值,来显示元素

2.fadeIn 和 fadeOut 方法

与show 和 hide 方法 类似,显示和隐藏元素,通过改变元素的透明度

3.slideUp 和 slideDown 方法

改变元素的高度
**slideUp: ** 元素由下到上缩短隐藏

**slideDown: **元素由上至下延伸展示

3.自定义动画方法animate()

animate(params,speed,callback)
params : 一个包含属性及值的映射例如{left:1000}
speed : 速度参数 可选
callback : 在动画完成时执行的函数 可选

停止动画: stop ([clearQueue],[gotoEnd])
clearQueue: 是否清空未执行的动画队列 可选
gotoEnd: 是否将正在执行的动画跳转到末状态

判断元素是否处于动画状态

if(!$(element).is(":animated")){  
//如果当前没有进行的动画
}

延迟动画:
delay();

3. 其他动画方法

toggle方法
切换元素的可见状态

slideToggle方法
通过高度变化来切换匹配元素的可见性

fadeTo方法
把元素的不透明度以渐近的方式调整到指定的值

fadeToggle方法
通过不透明度变化来切换匹配元素的可见性

上一篇 下一篇

猜你喜欢

热点阅读