锋利的jQuery之jQuery中的事件与动画

1.jQuery中的事件

1.1加载DOM

$(document).ready()方法与window.onload方法之间比较:

执行时机

window.onload方法是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行的,这时JavaScript才能访问网页中的任何元素。而$(document).ready()方法在DOM完全就绪时就可以被调用。此时网页中的所有元素对jQuery而言都是可以访问的,但是,这并不意味着这些元素的关联文件都已下载完毕。$(window).load(function(){})等价于window.onload.

多次使用

window.onload不能实现多次使用,只有最后一次使用有效。而$(document).ready()可以多次使用。

简写方式

window.onload没有简写方式,$(document).ready()可以简写为$().ready()或$().

1.2事件绑定

bind(type [, data], fn)

第一个参数是事件类型,类型包括:blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mouseover,mousemove,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup和error等,还可以自定义名称。

第二个参数为可选参数,作为event.data属性值传递给事件对象的额外数据对象。

第三个参数为用来绑定的处理函数。

1.3事件对象的属性

event.type

获取事件类型

event.preventDefault()

阻止默认的事件行为。

event.stopPropagation()

阻止事件的冒泡

event.target

获取触发事件的元素

event.relatedTarget

获取事件的相关元素

event.pageX,event.pageY

获取光标相对于页面的x坐标与y坐标

event.which

获取鼠标事件中的左,中,右键,分别返回1,2,3。

event.metaKey

键盘事件中获取<ctrl>键

1.4移除事件

unbind([type], [data])

第一个参数是事件类型,第二个参数是要移除的函数。

如果没有参数,则删除所有绑定的事件。

如果提供了事件类型,则删除该类型的绑定事件。

如果把在绑定时传递的处理函数作为第二个参数,则只有这个特定的事件处理函数会被删除。

另外,对于只需要触发一次的事件,可以使用jQuery提供的one()方法。

one(type, [data], fn),语法与bind方法类似。

1.5模拟操作

常用模拟

$element.trigger("click")等价于$element.click()

触发自定义事件

$element.trigger("myClick")

传递数据

trigger(type [, data])

该方法有两个参数,第一个参数是要触发的事件类型,第二个参数是要传递给事件处理函数的附加数据,以数组形式传递。

执行默认操作

一般在触发事件时,浏览器同时会有一些默认操作,比如说获得焦点。如果只想触发绑定的事件,而不想执行浏览器的默认操作,可以使用triggerHandler()方法。

1.6其他用法

绑定多个事件类型

可以用bind方法绑定多个事件,事件之间用空格隔开。

添加事件命名空间,便于管理

在所绑定的事件类型后面添加命名空间,这样在删除事件时,只需要指定命名空间即可。

删除多个事件类型可以用链式操作。

相同事件名称,不同命名空间执行方法

可以为元素绑定相同的事件类型,然后根据不同的命名空间按需调用。例如,

$element.bind("click", f1(){});

$element.bind("click.plugin", f2(){});

$element.trigger("click!"); //触发所有的不包含在命名空间中的click事件

$element.trigger("click"); //触发所有的click事件

2.jQuery中的动画

2.1show()方法和hide()方法

show()方法和hide()方法

用于控制元素的显示与隐藏。

show()方法和hide()方法让元素动起来

给方法传入参数,来控制元素显示与隐藏过程的快慢或持续时间。可以传入"slow","normal","fast"或者持续时间(以毫秒为单位)。

2.2fadeIn()方法和fadeOut()方法

用于改变元素的不透明度。fadeOut会降低元素的不透明度,直至元素完全消失。fadeIn方法则刚好相反。

2.3slideUp()方法和slideDown()方法

用于改变元素的高度。slideDown方法可以使元素由上至下延伸显示,slideUp则刚好相反。

2.4自定义动画方法animate()

animate(params, speed, callback)

params一个包含样式属性及值的映射,比如{p1: "v1", p2: "v2"}

speed速度参数,可选

callback在动画完成时执行的函数,可选

自定义简单动画

$element.animate({left: "500px"}, 1000)

累加累减动画

$element.animate({left: "+=500px"}, 1000)

多重动画

同时执行多个动画 $element.animate({left: "500px", top: "100px"}, 1000)

按顺序执行多个动画 $element.animate({left: "500px"}, 1000).animate({top: "100px"}, 1000)

综合动画

$element.animate({left: "500px", top: "100px"}, 1000)

.animate({opacity: "0.5"}, 1000)

.fadeOut(slow);

2.5动画回调函数

当需要在动画结束时执行某项操作时,即可使用动画回调函数。

2.6停止动画和判断是否处于动画状态

停止元素的动画

stop([clearQueue], [gotoEnd])

两个参数都是可选参数,为Boolean值。clearQueue决定是否清空未执行完的动画队列,gotoEnd决定是否将当前正在执行的动画直接跳至最终状态。

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

$element.is(":animated")

延迟动画

delay()方法,用于动画的延时。

2.7其他动画方法

toggle(speed, [callback])切换元素的可见状态

slideToggle(speed, [easing], [callback])通过高度变化切换元素的可见性

fadeTo(speed, opacity, [callback])将元素的不透明度以渐进的方式调整到指定值

fadeToggle(speed, [easing], [callback])通过不透明度变化来切换元素的可见性

相关推荐