jquery学习(五)-jquery中的事件

参考锋利的jQuery第二版

1.加载DOM

(1)执行时机

若想为某个DOM元素绑定事件(或者是其他操作),这需要文档加载完成后才能进行绑定(或其他操作),否则会报错。所以对于这种情况,javascript提供了,window.onload方法;而jQuery提供了,$(document).ready()(简写为$())方法。

虽然这两个方法有类似的功能,但是执行的时机方面还是有区别的。Window.onload方法是在网页所有的元素(包括元素的所有关联文件)完全加载到浏览器后才能执行,即javascript此时才能访问页面中的任何元素。而通过jQuery的$(document).ready()方法注册事件处理程序,在DOM完全就绪时就可以调用,此时网页的所有元素对于jQuery来说都是可以访问的,但这并不意味着这些元素关联文件已经下载完成。

例如有一个大型的图片库,为网页中的图片添加某些行为(点击图片显示和隐藏切换),如果使用window.onload方法,那么需要等到每一张图片都加载完成后才能进行操作。如果使用jQuery的$(document).ready方法,则只需要DOM加载就绪就可以进行操作,无需等待所有图片都加载完毕。

虽然使用使用jQuery的$(document).ready方法能提供效率,但是有时候我们需要等待资源完全加载完成后在进行操作,这时jQuery提供了$(window).load()方法,这等价于原生javascript的window.onload方法。

(2)多次使用

Window.onload方法不能编写多个,如果存在多个,那么最后一个会覆盖前面的,代码如下:

Function one(){

Alert(“one”);

}

Function two(){

Alert(“two”);

}

Window.onload=one;

Window.onload=two;

这里只会弹出“two”对话框。

$(document).ready()方法能多次使用,每次调用$(document).ready()时,都会在现有的行为上追加新的行为,这些行为函数会根据注册的顺序依次执行。

$(document).ready(function(){

one();

});

$(document).ready(function(){

two();

});

这里会先弹出“one”对话框,然后弹出“two”对话框。

2.事件绑定

bind( type [,data] ,fn)   type:事件类型;data可选参数,作为event.data属性值传递给事件对象的额外数据对象;fn事件处理函数。它和ready方法一样,可以多次调用。

3.合成事件

jQuery有两个合成事件,分别是hover()方法和toggle()方法。

hover()方法的语法结构为:

hover(enter ,leave)  第一个函数(enter),当光标移动到元素上面时触发;第二个函数(leave),当光标离开元素时触发。

toggle()方法语法结构:

toggle(fn1 ,fn2 ,fn3 ,....... ,fnn)该方法用于模拟鼠标连续点击事件。第一次点击元素时,触发fn1;第二次点击该元素时,触发fn2,;如果有更多函数,则依次调用,直到最后一个。之后每次点击都会对这几个函数轮番调用。

4.事件冒泡

说到事件冒泡,不得不先说同心圆的问题。说白了,就是说一个页面上面有n个同心圆,如果点击最里面的那个圆,那么实际上是点击了所有的圆。若是为每一个圆绑定了click事件,那么根据事件冒泡机制,就会依次触发所有的事件。如下图:

会依次触发click1,click2,click3,click4.等等。如果想要只触发当前点击元素的事件,则需要阻止事件冒泡行为(event.stopPropagation())。

4.默认事件

网页中的元素也有自己的默认行为,如单击超链接后会跳转,点击提交按钮后表单会被提交。有时候我们并不希望触发这些默认的行为,这是jQuery提供了event.preventDefault()方法类阻止元素的默认行为。(还可以通过return false来阻止默认事件和事件冒泡,推荐用这个)。

5.事件对象属性


event.type


获取事件的类型


event.preventDefault()


阻止默认事件


event.stopPropagation()


阻止事件冒泡


event.target


获取触发的元素


event.pageX,event.pageY


分别表示页面的x、y坐标。当时IE浏览器是为event.x/event.y,FireFox下为event.pageX/event.pageY。通过jQuery封装统一为event.pageX,event.pageY。


event.which


在鼠标的点击事件中,获取鼠标的左、中、右键。

1-左键

2-中键

3-右键


event.metaKey


针对不同浏览器对键盘的ctrl键解释不同,jQuery进行封装,并规定event.metaKey为键盘事件中获取ctrl按键。

6.移除事件

unbind(type [,data]),type为参数类型,data为绑定的事件处理函数。

(1)当没有参数是,则删除所有绑定的事件;

(2)当只穿事件类型(type)参数时,则只删除该类型的绑定事件;

(3)如果来那个参数都传,则只会删除该事件类型下所绑定的对于事件处理函数;

7.模拟操作

(1)常用模拟

在jQuery中通过trigger方法来完成模拟操作。

如下是触发id为btn的按钮的click事件:

$(“#btn”).trigger(“click”);

(2)触发自定义事件

该方法还可以触发自定义名称的事件,如:

$(“#btn”).bind(“myClick”,function(){

alert(“hello wrod”);

})

$(“#btn”).trigger(“myClick”);

(3)传递数值

trigger(type [,data]),type触发事件的类型,传递给事件处理函数的附加函数,以数组的形式传递。如下代码:

$(“#btn”).bind(“myClick”,function(evant, messagel1,messagel2){

alert(messagel1+messagel2);

})

$(“#btn”).trigger(“myClick”,[“hello”,”Eric”]); //alert出 helloEric;

(4)执行默认操作

trigger()方法触发事件后,会执行浏览器默认的操作。

如: $(“input”).trigger(“focus”);

以上代码不仅会触发绑定在input元素上的focus事件,还会使得元素本身获取焦点(浏览器默认操作)。

如果只想触发绑定的focus事件,不想执行浏览器默认的操作,可以是有jQuery的另外一个方法——triggerHandler()方法。

$(“input”).triggerHandler(“focus”),这样仅仅会触发绑定的focus事件,如何执行浏览器默认的操作。

8.事件委托

Html代码如下:

<ul>

<li>1</li>

<li>2</li>

<li>3</li>

<li>4</li>

</ul>

若想为上面的li绑定click事件处理程序,并且希望后续添加的li元素也具有该事件,这时我们可以考虑使用事件委托的方式实现,这样不仅书写方便,性能方面也大大提高。

用delegate方法

$("ul").delegate("li","click",function(){/*显示更多信息*/});

也可以使用on方法

$("ul").on("click","li",function(){/*显示更多信息*/});

9.其他用法

(1)可以绑定多个事件类型:

如下代码:

$(“#myDiv”).bind(“mouseover  mouseout”,function(){

//执行代码

});

(2)可以为事件添加命名空间,便于管理

如下代码:

$(“#myDiv”).bind(“click.plugin”,function(){

//执行代码

});

$(“#myDiv”).bind(“mouseover.plugin”  mouseout”,function(){

//执行代码

});

$(“#myDiv”).bind(“dbclickmouseout”,function(){

//执行代码

});

//移除命名空间为“plugin”的事件,即移除click和mouseover事件

$(“#myDiv”).unbind(“.plugint”);

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

$(“#myDiv”).trigger(“click!”);//触发所有不包含在命名空间的click方法。

时间: 2024-07-30 10:19:45

jquery学习(五)-jquery中的事件的相关文章

JS学习五(js中的事件)

[JS中的事件分类] 1.鼠标事件 click/bdlclick/onmouseover/onmouseout 2. HTML事件 onload/onscroll/onsubmit/onchange/onfocus 3. 键盘事件 keydown:键盘按下时触发 keypress:键盘按下并松开时的瞬间触发 keyup:键盘抬起时触发 [注意事项] ①执行顺序:keydown-->keypress-->keyup ②当长按时,会循环执行keydown-->keypress ③有keydo

jQuery学习笔记——jQuery基础核心

代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起始的.而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所以我们在页面元素选择或执行功能函数的时候可以这么写: $(function () {}); //执行一个匿名函数 $(‘#box’);//进行执行的ID元素选择 $(‘#box’).css(‘color’, ‘red’);//执行功能函数由于$本身就是jQuery对象的缩写形式,那么也就是说上面的三段代码也可以写成如下形式:jQ

jQuery学习笔记——jQuery常规选择器

一.简单选择器在使用 jQuery 选择器时,我们首先必须使用“$()”函数来包装我们的 CSS 规则.而CSS 规则作为参数传递到 jQuery 对象内部后,再返回包含页面中对应元素的 jQuery 对象.随后,我们就可以对这个获取到的 DOM 节点进行行为操作了.#box {//使用 ID 选择器的 CSS 规则color:red;//将 ID 为 box 的元素字体颜色变红}在 jQuery 选择器里,我们使用如下的方式获取同样的结果:$('#box').css('color', 'red

JQuery学习笔记-JQuery中的事件

window.onlaod 必须等网页中所有内容(包括图片)加载完毕才能执行,不能同时编写多个 $(document).ready() 网页中所有DOM结构绘制完毕后执行,可能DOM元素关联的东西并没有加载完毕,能同时编写多个,简写$() <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <h

jquery学习笔记(三)事件和动画

一.ready机制 $(document).ready( function(){} ) $().ready( function(){} ) $( function(){} )  jquery的ready函数会在dom准备完毕后执行,并且可以多次使用 $(selector).load( function(){} ) 此方法相当于js自身的onload方法 如 $(window).load(function(){})    相当于  window.onload=function(){} ------

jquery学习笔记-jQuery实现单击和鼠标感应事件

对于单击事件而言,jQuery同样提供了动态交替的toggle()方法,这个方法接受两个参数,两个参数均为监听函数,在click事件中交替使用. 例子:点击事件的动态交互. <script type="text/javascript"> $(function() { $("#ddd").toggle( function(oEvent) { $(oEvent.target).css("opacity", "0.5")

jQuery学习之jQuery Ajax用法详解

[导读] jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍.我们先从最简单的方法看起,处理复杂的ajax请求时,jQuery使用jQue jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍. 我们先从最简单的方法看起,处理复杂的ajax请求时,jQuer

jQuery学习之jQuery Ajax用法详解(转)

[导读] jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍.我们先从最简单的方法看起,处理复杂的ajax请求时,jQuery使用jQue jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍. 我们先从最简单的方法看起,处理复杂的ajax请求时,jQuer

jQuery学习-w3cschool-(1)jQuery 教程

一.jQuery 简介 (1)???使用 Google 的 CDN引入jQuery库: <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs /jquery/1.4.0/jquery.min.js"></script> </head> (2)???使用 Microsoft 的 CDN引入jQuery库: <h

jquery学习笔记-jQuery操纵DOM元素属性 attr()和removeAtrr()方法

jQuery中操纵元素属性的方法: attr(): 读或者写匹配元素的属性值. removeAttr(): 从匹配的元素中移除指定的属性. attr()方法 读操作 attr()读操作. 读取的是匹配元素中第一个元素的指定属性值. 格式: .attr(attributeName),返回值类型:String.读取不存在的属性会返回undefined. 注意选择器的选择结果可能是一个集合,这里仅仅获取的是集合中第一个元素的该属性值. 看例子: <!DOCTYPE html> <html>