码迷,mamicode.com
首页 > Web开发 > 详细

jQuery中的事件和动画

时间:2016-07-15 13:36:29      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

 1、事件绑定——bind(type,[params],fn)

type:事件类型,包括blur,focus,load,resize,scroll,unload,click,dbclick,mousedouwn,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error,

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

fn:绑定的处理函数

*jQuery中的时间绑定类型比普通的javascript少了on,如onclick()——click()

<div id="panel"><h5 class="head">jQuery的事件绑定</h5><div class="content">It‘s a ......</div></div>

//当Dom加载完毕,找到标题所在的元素,绑定click事件,找到内容元素,将内容元素显示

$(function(){$("#panel").bind("click",function(){$(this).next().show();})});

与ready()方法一样,bind()方法也可以多次调用,this引用的是相应行为的Dom元素,为了使Dom 元素能够使用jQuery中的方法,可以使用$(this)将其转换为jQuery对象

//承上,显示内容后,再点击标题后,内容被隐藏

//当Dom加载完毕,找到标题所在的元素,绑定click事件,找到内容元素,如果内容元素是显示的,则隐藏,如果内容是隐藏的,则显示

$(function(){

$("#panel h5.head").bind("click",

function(){

if($(this).next().is(":visible")){

$(this).next().hide();}

else{$(this).next().show();

}});

});

//$(this).next()被多次使用,因此可以为它定义一个局部变量

var $content=$(this).next();

$(function(){

$("#panel h5.head").bind(function(){

var $content=$(this).next();

if($content.is(":visible"))

{

$content.hide();

}

else

{

$content.show();

}

});

});

//当发现相同的选择器在代码中出现多次,用变量把它缓存起来,更多的jQuery性能优化后面的章节会再提到

2、改变绑定事件的类型

上面的例子中,给元素绑定的事件类型是click,当用户单击的时候会触发绑定的事件,然后执行时间的函数代码,现在把事件类型换成mouseover和mouseout,即当鼠标滑过的时候就触发事件

//等待Dom加载完毕,找到标题所在的元素,绑定mouseover事件,找到内容元素,显示内容,找到标题所在的元素,绑定mouseout事件,找到内容元素后,隐藏内容

$(function(){

var $content=$(this).next();

$("#panel h5.head").bind("mouseover",function(){

$content.show();

}).bind("mouseover",function(){

$content.hide();

});

});

像click,mouseover,mouseout这类事件,在程序中经常会使用到,jQuery为此也提供了简写方法,简写方法和bind()方法类似,实现的效果也相同,唯一的区别就是能够减少代码量

$(function(){

$("#panel h5.head").mouseover(function(){$content.show()}).mouseout(function($content.hide()));

});

3、合成事件

jQuery有两个合成事件——hover()和toggle(),类似前面的ready(),hover(),toggle()方法都属于jQuery自定义方法

hover:用于模拟鼠标光标悬停事件,当光标移动到元素上时,会触发指定的第一个函数——enter,当鼠标移出这个元素时,会触发指定的第二个函数——leave

$(function(){

$("#panel h5.head").hover(function(){

$content.show();

}).function(){

$content.hide();

}

});

==>代码运行效果与下面代码运行效果是一样的

$(function(){

$("#panel h5.head").mouseover(function(){

$content.show();

}).mouseout(function(){

$(this).next().hide();

});

});

attention:css中有伪类选择符,例如“:hover”,当用户光标悬停在元素上时,会改变元素的外观,在大多数符合规范的浏览器中,伪类选择符可以用于任何元素,然而在IE6中浏览器中,伪类选择付仅可用于超链接元素,对于其他元素,可以使用jQuery中的hover(),hover()准确来说是的提到了bind("mouseenter") and bind("mouseleave"),而不是替代bind(mouseover) and bind("mouseout"),因此当需要触发hover()的第二个函数时,需要用trigger("mouseleave"),而不是trigger("mouseout")

 4、toggle(fnN):toggle()用来模拟鼠标连续单击事件,第一次单击元素时,触发指定的第一个函数,当在此点击同一个元素时,则触发第二个函数,如果有更多的函数,则依次触发,知道最后一$("#panel h5.head").toggle(

function(){$content.show();},

function(){$content.hide();});

toggle()在jQuery中还有另外一个作用:切换元素的可见状态,如果元素是可见的,单击切换后则为隐藏,如果元素是隐藏的,单击切换后则为可见的,则上面的代码可写成如下jQuery代码:

$(function(){

$("#panel h5.head").toggle(function(){

$content.toggle();

$(this).addClass("highlight");

}),function(){

$(this).removeClass("highlight");

$content.toggle();

}

});

 

jQuery中的事件和动画

标签:

原文地址:http://www.cnblogs.com/ypcute/p/5672905.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!