博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
锋利的jQuery第四章:jQuery中的事件和动画
阅读量:5213 次
发布时间:2019-06-14

本文共 9833 字,大约阅读时间需要 32 分钟。

第一部分

1,

(1)$()是$(document)的简写,默认参数是document.

$(function(){}是$(document).ready(function(){})的简写。

2,

(1)事件绑定 bind(type [,data],fn);

type是事件类型,有blur,focus,load,resize,scroll,unload,click,dbclick,mousedown,mouseup,

mouseover,mousemove,mouseout,mouseenter,mouseleave,change,select,submit,keydown,

keypress,keyup和error等,也可是是自定义名称。

(2)下面是一个有关bind的例子,实现单击标题是显示内容:

View Code
 
什么是jQuery?
jQuery是继prototype之后的有一个优秀的javascript类库

对于click,mouseover,mouseout这类事件,可以使用下面的简写方法:

View Code
 
什么是jQuery?
jQuery是继prototype之后的有一个优秀的javascript类库

 (3)合成事件 hover()方法,语法结构是 hover(enter,leave);用于模拟光标悬停事件。当光标移动到元素上,触发enter函数,当光标移出这个元素触发第二个函数leaver.下面例子同样效果:

View Code
 
什么是jQuery?
jQuery是继prototype之后的有一个优秀的javascript类库

(4)toggle()方法,toggle(fn1,fn2,---fnN);模拟鼠标连续单击事件,第一个触发fn1,第二次触发fn2,然后依次向后触发,循环触发。下面使用toggle实现例子

View Code
 
什么是jQuery?
jQuery是继prototype之后的有一个优秀的javascript类库

toggle()方法另外一个作用是:切换元素的可见状态,如果可见单击后隐藏;如果隐藏,单击后可见。例子:

View Code
 
什么是jQuery?
jQuery是继prototype之后的有一个优秀的javascript类库

 3,事件冒泡

(1)事件冒泡,因为多个元素绑定同一事件,而且有嵌套关系,事件触发时就会按照dom的层次结构像水泡

一样不断向上直至顶端。下面就是冒泡的例子:

View Code
外层div元素
内层span元素
外层div元素

(2)事件对象:当单击元素element时,事件对象就被创建了,这个事件对象只有事件处理函数才能访问到,事件处理函数执行完毕,事件对象就销毁了。

$("element").bind("click",function(event){ //event事件对象});

(3)停止冒泡事件,阻止默认行为,添加如下代码即可:

event.stopPropagation(); //阻止冒泡,event是function(event)的参数,也可以是任意的参数如e event.preventDefault();//阻止默认行为,如阻止表单提交 return false;//同样可以阻止冒泡,也可以阻止表单提交

(4)事件捕获与事件冒泡相反,从顶端body向div再向span捕获,jQuery不支持。

4,事件对象的属性:

(1)event.type  获取事件类型

$("a").click(function (event) {             alert(event.type); //获取事件属性  输出"click"             return false; //阻止连接跳转         });

(2)event.target  获取触发事件的元素。

$("a[href='http://google.com']").click(function (event) {    var tg = event.target;    alert(tg.href); //在页面添加一个a,单击输出http://google.com    return false;});

(3)event.relatedTarget   访问相关元素。

(4) event.pageX 和 event.pageY  获取光标相对于页面的x坐标和y坐标。

$("body").click(function (event) {    alert("当前位置:" + event.pageX + "," + event.pageY);});

(5)event.witch  在鼠标单击时获取鼠标的左右中键(对应1,2,3),在键盘事件中获取键盘事件。

$("a").mousedown(function (e) { //鼠标按下    alert(e.which)});$("input").keyup(function (e) { //键盘按下    alert(e.which);   //输入a弹出65});

(6)event.metaKey  不同浏览器对ctrl解释不同,在jQuery中就是为键盘事件获取ctrl按键。

5,移除事件

(1)$("#btn").unbind("click");//移除click事件 

$("#btn").unbind();//移除所有的事件

语法结构:unbind([type],[data]);//type是事件类型,data是要移除的函数。

a,如果没有参数,移除所有绑定事件。

b,如果提供事件类型做为参数,只删除该类型的绑定事件。

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

(1)下面是例子

$("#content").bind("click", fun2 = function () { //给函数命名    var txt = $("#msg").html() + "

外层div元素被单击

"; $("#msg").html(txt); //为msg赋值}); //bind$("#content").click(function () { //单击自己时,自己解绑 $("#content").unbind("click", fun2);});

(3)one(type,[data],fn);//type是事件类型  one()方法绑定的事件只触发一次就自动解绑。

$("#btn").one("click", function () {    $("#test").append("绑定函数1");}).one("click", function () {    $("#test").append("绑定函数1");});

另外jquery1.7添加了on(),off(),delegate(),undelegate()事件绑定。

6 模拟事件

(1)常用模拟,使用trigger()方法模拟用户操作,比如页面加载完毕,触发后相当于用户单击

$("#content").trigger("click");//触发click事件,模拟事件

(2)触发自定义事件

$("body").bind("myClick", function () { //自定义名称的事件    alert("自定义事件触发了");});$("body").trigger("myClick");  //触发

(3)传递参数:trigger(type,[data])方法  type是事件类型,data是传递给处理函数的附加数据。

$("body").bind("myClick", function (event, msg1, msg2) { //自定义名称的事件    alert(msg1+msg2);});$("body").trigger("myClick",["自定义事件参数1","参数2"]);  //触发

(4)执行默认操作:

$("input").trigger("focus");不但触发input的focus事件,还会是input得到焦点。

$("input").triggerHandle("focus");  触发input的focus事件 ,但是不会使input得到焦点。

triggerHandle()方法触发事件但是不执行浏览器默认操作。

(5)绑定多个事件类型:

添加如下样式.over{ background-color:Red;}$("div").bind("mouseover mouseout", function () {    $(this).toggleClass("over");});//当鼠标移过来class=over,div变红,移走消失。

(6)添加事件命名空间:

$("div").bind("click.plugin", function () {    alert("click事件");});$("div").bind("mouseover.plugin", function () {    alert("mouseover事件");});$("div").bind("dbclick", function () {    alert("dbclick事件");});$("body").click(function () {    $("div").unbind(".plugin");//解除命名空间plugin的所有事件});

(7)相同事件名称,不同命名空间执行方法:

$("div").bind("click", function () {    alert("click事件");});$("div").bind("click.plugin", function () {    alert("click.plugin事件");});$("body").click(function () {    $("div").trigger("click!");//叹号匹配所有不包含在命名空间中的click方法});//如果去掉叹号,两者都触发。

 

第二部分  动画

1,

(1)show()将元素display样式设置为先前的显示状态(block,inline);hide()将display样式设置为none,导致隐藏。

可以加参数fast,slow,normal,时间整数(毫秒)。

(2)fadeOut()改到透明度到消失,fadeIn()相反。

(3)slideDown()向下显示,slideUp()向上隐藏。

(4)animate(params,speed,callback)自定义动画,params为样式如{property1:"value1",property2:"value2"}

speed速度,可选;callback动画执行完执行的函数,可选。

2  下面是有关动画的一个综合的例子:

样式:#panel {    position:relative;    width:100px;    height:300px;    border:1px solid #0050D0;    background:#96e555;    cursor:pointer;}html代码:
jQuery代码:$("#panel").click(function () { $(this).animate({ left: "+=500px" }, 3000) //累计从左移动,先执行 .animate({ height: "-=100px" }, 2000) //累计减少高度,后执行 .animate({ opacity: "0.5" }, 3000)//透明度降低到0.5 .fadeOut("slow", function () { //动画都可以带有回调函数 $(this).css("display", "block"); //显示,css方法不加入到动画队列,因此在callback中 $(this).animate({ opacity: "1" }, 3000); //改变透明度 });});

(1)+=和-=可以累计改变属性的值,如果直接写数字则改变一次。

(2)animate中的left是从左,top是从上;

(3)css()方法不会加入到动画队列,而是立即执行。

(4)将多个属性放到animate中会同时执行这些动画。

3,停止动画和判断是否正在动画

(1)stop[clearQueue][gotoEnd]);可选参数,true或false;clearQueue是否要清空未执行的动画队列;gotoEnd代表

是否直接跳转到 当前动画 的末状态。 如果直接使用stop()就停止当前正在进行的动画,后面的动画继续。

(2)hover(enter,leave)是鼠标悬停事件,进入执行enter,出来执行leave;下面的例子防止动画效果与鼠标不一致:

$("#panel").hover(function () {    $(this).stop()  //终止当前动画.animate({ height: "150px", width: "300px" }, 2000);}, function () {    $(this).stop()  //终止当前动画.animate({ height: "22px", width: "60px" }, 2000);});

如果有多个动画,想在enter时停止,可以将参数clearQueue设为true ,像这样stop(true)

stop(false,true)让当前动画直接到末状态。

stop(true,true)让当前动画直接到末状态,并清空动画队列。

(3)判断是否处于动画状态

if (!$(element).is(":animated")) {  //判断是否处于动画状态}; //如果当前没有进行动画,添加新动画

(4)延迟动画  delay(1000)  延迟1秒。

4,其他动画

(1)toggle()在显示和隐藏之间切换。

(2)slideToggle()通过高度切换可见行。

(3)fadeTo(2000,0.5)通过透明度调到指定值,2秒透明度到0.5

(4)fadeToggle()通过不透明度切换可见性。

 最后一个例子挺好的,实现播放页面的转动,但是我敲出来html后,一看没有css修饰,难看的很,于是什么都不想写了,下面是网上下载的源代码:

html+jQuery

卡通动漫

1
2
3
4
上一页
下一页
更多>>
css
* { margin:0; padding:0; word-break:break-all; }body { background:#FFF; color:#333; font:12px/1.5em Helvetica, Arial, sans-serif; }h1, h2, h3, h4, h5, h6 { font-size:1em; }a { color:#2B93D2; text-decoration:none; }a:hover { color:#E31E1C; text-decoration:underline; }ul, li { list-style:none; }fieldset, img { border:none; }/* v_show style */.v_show { width:595px; margin:20px 0 1px 60px; }.v_caption { height:35px; overflow:hidden; background:url(img/btn_cartoon.gif) no-repeat 0 0; }.v_caption h2 { float:left; width:84px; height:35px; overflow:hidden; background:url(img/btn_cartoon.gif) no-repeat; text-indent:-9999px; }.v_caption .cartoon { background-position: 0 -100px; }.v_caption .variety { background-position:-100px -100px; }.highlight_tip { display:inline; float:left; margin:14px 0 0 10px; }.highlight_tip span { display:inline; float:left; width:7px; height:7px; overflow:hidden; margin:0 2px; background:url(img/btn_cartoon.gif) no-repeat 0 -320px; text-indent:-9999px; }.highlight_tip .current { background-position:0 -220px; }.change_btn { float:left; margin:7px 0 0 10px; }.change_btn span { display:block; float:left; width:30px; height:23px; overflow:hidden; background:url(img/btn_cartoon.gif) no-repeat; text-indent:-9999px; cursor:pointer; }.change_btn .prev { background-position:0 -400px;  }.change_btn .next { width:31px; background-position:-30px -400px; }.v_caption em { display:inline; float:right; margin:10px 12px 0 0; font-family:simsun; }.v_content { position:relative; width:592px; height:160px; overflow:hidden; border-right:1px solid #E7E7E7; border-bottom:1px solid #E7E7E7; border-left:1px solid #E7E7E7; }.v_content_list { position:absolute; width:2500px;top:0px; left:0px; }.v_content ul {
float:left;}.v_content ul li { display:inline; float:left; margin:10px 2px 0; padding:8px; background:url(img/v_bg.gif) no-repeat; }.v_content ul li a { display:block; width:128px; height:80px; overflow:hidden; }.v_content ul li img { width:128px; height:96px; }.v_content ul li h4 { width:128px; height:18px; overflow:hidden; margin-top:12px; font-weight:normal; }.v_content ul li h4 a { display:inline !important; height:auto !important; }.v_content ul li span { color:#666; }.v_content ul li em { color:#888; font-family:Verdana; font-size:0.9em; }

总结:这些东西不难,但是每天的任务总是不能完成。

 
 
 
posted @
2012-10-15 22:03 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/bkwz/p/3840102.html

你可能感兴趣的文章
Linux operating system (Ubuntu) 学习-1
查看>>
Python字典实现分析
查看>>
jenkins+testNG
查看>>
Java自定义范型的应用技巧
查看>>
[洛谷1485] 火枪打怪
查看>>
白话经典算法系列之六 快速排序 快速搞定
查看>>
错了:用流量能够放肆,有wifi则要节制
查看>>
https://zhidao.baidu.com/question/362784520674844572.html
查看>>
【MFC 学习笔记】CFile读写文件
查看>>
PAT B1018.锤子剪刀布(20)
查看>>
Extjs控件之 grid打印功能
查看>>
枚举类型(不常用)递归
查看>>
ETL
查看>>
Tomcat源码分析(六)--日志记录器和国际化
查看>>
今天把csdn的博客搬家到博客园
查看>>
D3.js+Es6+webpack构建人物关系图(力导向图),动态更新数据,点击增加节点,拖拽增加连线......
查看>>
基于网络的 Red Hat 无人值守安装
查看>>
Mybatis第六篇【配置文件和映射文件再解读、占位符、主键生成与获取、Mapper代理】...
查看>>
MySQL学习笔记(二):MySQL数据类型汇总及选择参考
查看>>
jQ 移动端返回顶部代码整理
查看>>