侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Jquery学习之事件和动画

2024-05-09 星期四 / 0 评论 / 0 点赞 / 87 阅读 / 9514 字

一.jquery中的事件 1.执行时机 jquery中使用$(document).ready()方法代替window.onload。区别在于window.onload在网页中的所有元素(包括元素的所有

 一.jquery中的事件

1.执行时机

jquery中使用$(document).ready()方法代替window.onload。区别在于window.onload在网页中的所有元素(包括元素的所有关联文件)完全加载到浏览器中才开始执行,而$(document).ready()在DOM完全就绪时就可以被调用。解决方法是另外一个页面加载方法load(),load()会在元素的onload事件中绑定一个处理函数。如果处理函数绑定在元素上,会在元素的内容加载完毕后触发,如果绑定给window对象,会在所有内容加载完毕后触发。

$(window).load(function{})等价于window.onload=function(){}

多个事件的绑定以及简写

格式:$(document).ready(function(){  })只需多次追加新的行为即可

简写$(function(){  })   ;也可以简写把document省略,即$().ready(function(){})

2.事件绑定

使用bind()方法来匹配元素进行特定事件的绑定,调用格式bind(type,[.data],fn);

第一个参数是事件类型,包括:blue、focus、load、resize、scroll、unload、click、dblclick、mousedown、mouseup、mousemove、moseover、mouseout、mouseenter、mouseleave、change、select、submit、keydown、keypress、keyup、error等

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

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

bind()方法的简写例:$("#panel h5.head").bind("mouseover",function(){})

$("#panel h5.head").mouseover(function(){})与ready()的简写相似

3.合成事件

jquery中的两个合成事件hover()方法和toggle()方法,都属于jquery自定义的方法。

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

toggle(fn1,fn2,fn3,fn4...fnN)方法;用于模拟鼠标连续单机事件。第一次单击元素触发第一个元素,再次单击同一元素触发指定的第二个函数,入果有更多元素则依次触发。直到最后一个,随后的每次单击重复对这几个函数的轮番调用。

toggle()还有个作用是切换元素的课件状态可以替代show(),hide()方法,(个人不赞成使用,没有前者可读)

4.事件冒泡

如果一个元素嵌套在另外一个元素里并且都绑定了click事件,单击后,会按照DOM层次像水泡一样不断向上直至顶端。

函数中使用事件对象只需要为函数添加一个参数代码如下

$("element").bind("click",function(event){//...});单击element元素,事件对象就被创建了,且事件对象只有事件处理函数能访问到,处理完毕后就被销毁。//事件对象

停止事件冒泡可以阻止事件中其他对象的事件处理函数被执行。用stopPropagation()

只需在函数最后用event.stopPropagation();停止事件冒泡即可,也可以用return false代替//停止事件冒泡

在jquery中用preventDefault()方法阻止默认元素行为。例如表单提交。也可以用return false代替

5.事件对象属性

 (1)event.type该方法用于获取事件的类型。

$("a").click(function(event){

alert(event.type);//获取事件类型  return false;//阻止链接跳转})以上代码运行后输出"click"

(2)event.preventDefault  jquery进行封装可兼容各种浏览器,而javascript此方法在IE浏览器中无效

(3)event.stopPropagation   与(2)相同

(4)event.target用于获取到触发事件的元素。

$("a[href='http://google.com']").click(function(event)){var tg=event.target;//获取事件对象

alert(tg.href);return false;}  输出"http://google.com"

(5)event.relatedTarget

(6)event.pageX和event.pageY该方法的作用是获取到光标相对于页面的x坐标和y坐标。

(7)event.which该方法的作用是在鼠标单击事件中获取到鼠标的左中右键,在键盘事件中获取键盘的按键。

(8)event.metaKey为键盘事件中获取<ctrl>按键

6.移出事件

unbind([type],[data])第一个是事件类型,第二个是将要移除的函数

a.如果没有参数则删除所有绑定的事件;b.如果提供了事件类型作为参数,则只删除该类型的绑定事件;c.如果在绑定时传递的处理函数作为第二个参数,则只删除这个特定的事件处理函数

one(type,[data],fn)方法为元素绑定处理函数,处理函数触发一次后立即被删除。只要第一次的单击处理函数执行,之后的单击无效

7.模拟操作   $("$btn").trigger("click")用户进入页面后触发click事件,简化语法$("$#btn").click()

trigger不仅能够支持触发浏览器支持的具有相同名称的事件,也可以触发自定义名称事件

传递数据

执行默认操作   如果只想触发绑定的事件,不想执行浏览器的默认操作,可以用triggerHandler()方法如$("input").triggerHandler("focus")  此操作触发input元素上绑定的特定事件,同时取消对此事件的默认操作,即值触发事件。不得到焦点

8.其他用法a.绑定多个事件类型b.添加事件命名空间c.相同事件名称,不同命名空间执行方法

二.jquery中的动画

 1.show()和hide()

此两种类容控制内容显示隐藏。注意:hide()操作第一步记住display当前值block或inline等,第二部把值改为none;做jquery动画要求在标准模式下;可以为这两个函数设置一个参数,fast:200;normal:400;slow:600;或者单位为毫秒的数字;不过会慢慢增大或减少内容高度宽度及不透明度。

2.fadeIn()和fadeOut()此两方法只改变元素的不透明度,fadeOut在指定的一段时间内降低元素的不透明度,直到元素完全消失fadeIn()则相反

3.slideUp()和slideDown()只改变高度,如果一个元素的display属性为none ,使用slideDown()元素将由上至下延伸显示,slideUp()相反,由下至上隐藏。动画都可以指定三种参数slow,normal,fast,时间分别是0.6,0.4,0.2,秒,使用速度关键字要加引号,如果是数字就不需

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

语法animate(params,speed,callback);

params:一个包含样式属性及值得映射,如{property1:"value",property2:"value2"...};speed:速度参数,可选;callback:在动画完成时执行的函数,可选。

a.自定义简单动画

为了能更改元素的left ,top等样式属性,position样式设置为relative或者absolute

例如设置为relative时$(function(){

$("#panel").click(function(){

$(this).animate({left:"500px"},3000);//加入animate()方法,使元素3秒内向右移动500像素。

});

b.累加、累减动画500px前加上+=或者-=

c.多重动画

例:$("#myImg").click(function(){

$(this).animate({left:"500px",height:"200px"},3000);

});

});

按顺序执行多个动画,只需要把代码拆开然后按顺序写

$(this).animate({left:"500px"},3000);

$(this).animate({height:"200px"},3000);因为animate是对同一个jQuery对象操作,所以也可以改为链式写法$(this).animate({left:"500px"},3000).animate({height:"200px"},3000);

4.综合动画

5.动画回调函数

如果想在最后一步改变元素样式并不能得到预期效果,css()方法会在执行动画的时候就开始执行,因为css()方法并不会加入动画队列中,使用回调函数callback对非动画方法实现排队。只要把css()方法卸载最后一个动画的回调函数里。

callback回调函数适用于所有jquery动画效果方法,$("#element").slideDown("normal",function(){//效果完成后做其他事});

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

a.停止元素动画

如果需要在某处停止动画,需要使用stop()方法,stop()方法的语法结构为:stop([clearQueue],[gotoEnd]);参数都为可选,为boolean值,第一个代表是否要清空未执行完的动画队列,第二个代表是否直接将正在执行的动画跳转到末状态。

直接使用stop()方法,会立即停止当前正在进行的动画,如果接下来还有动画等待继续进行,则以当前状态开始接下来的动画。

stop(true)对多个动画的组合,会在停止第一个动画后,后续未执行的动画队列也都将清空。

后一个动画需要基于前一个动画的末状态时可以通过stop(false,true)使得停止当前动画并直接到达当前动画的末状态。

也可以两者结合起来使用stop(true,true),即停止当前动画并直接到达末状态,并清空队列。

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

if(!$(element).is(":animated")){//判断元素是否处于动画状态//入股偶没有则添加新动画}

c.延迟动画

可以使用delay()方法对动画进行延迟操作,在animate(0方法后加.delay(1000)

4.其他4个专门用于交互的动画方法

toggle(),slideToggle,fadeTo(),fadeToggle()

广告 广告

评论区