初窥JQuery(二) 事件机制(1)


Posted in Javascript onNovember 25, 2010

当然它的优点并不只在于这点,使用JQuery事件处理机制比直接使用Javascript本身内置的一些事件相应方式更加的灵活,更加不容易暴露在外,而且有更加优雅的语法,大大减少了我们工作的量度。

JQuery的事件处理机制包括:页面加载、事件绑定、事件委派、事件切换四种机制。我们先从$(document).ready()事件开始。

  一、页面加载$(document).ready()相当与Javascript中的onLoad()事件,都是在页面加载的时候执行该方法,但是两者又有着微妙的差别,ready()事件是当HTML下载完成并解析成DOM树之后就可以执行,而onLoad()事件要等HTML包括文件都下载完成之后才能执行。我们在ready()事件中可以绑定其他的一些事件或者函数,ready()有几种语法可以表示:

$(document).ready(function(){});

$().ready(function(){});

$(function(){});

当然我个人还是习惯于用第一种,增强可读性,需要注意的是在使用ready()事件的时候请确保在 <body> 元素的onload事件中没有注册函数,否则不会触发$(document).ready()事件。也可以在同一个页面中无限次地使用$(document).ready()事件。其中注册的函数会按照(代码中的)先后顺序依次执行。

二、事件切换只有两个方法,就是hover()和toggle()两个方法,由于他们截取组合的用户操作,并且以多个函数响应,因此也称为复合事件处理机制。hover()方法是一个模仿鼠标悬停变化的方法,简单的说就是鼠标移入移出是时候执行你指定的行为的方法,我们最常用的就是做菜单切换效果。toggle()方法就是当你点击按照顺序执行你指定的函数方法,第一次点击执行第一个函数,第二次点击执行第二个函数,以此类推,它可以使用事件绑定中的unbind('click')方法删除。

hover(over,out)实例:

<style type="text/css"> 
#Menu 
{ 
background-color:Red; 
width:150px; 
height:30px; 
text-align:center; 
border:solid 1px black; 
} 
#Menu_child 
{ 
width:150px; 
border:solid 1px black; 
display:none; 
} 
#Menu_child div 
{ 
background-color:#f3f3f3; 
width:150px; 
height:30px; 
text-align:center; 
} 
</style> 
<script language="javascript" type="text/javascript"> 
$(document).ready(function() { 
$("#Menu").hover( 
function() { 
$("#Menu_child").fadeIn(); 
}, 
function() { 
$("#Menu_child").fadeOut(); 
}); 
}); 
</script> 
</head> 
<body> 
<div id="Menu">JQuery事件处理</div> 
<div id="Menu_child"> 
<div>页面加载</div> 
<div>事件绑定</div> 
<div>事件委派</div> 
<div>事件切换</div> 
</div> 
</body>

toggle(fn,fn)实例:
HTML代码 
<input type="button" value="toggle()方法" id="toggle" /> 
JQuery代码 
$("#toggle").toggle( 
function() { 
alert("第一次点击"); 
}, 
function() { 
alert("第二次点击"); 
}, 
function() { 
alert("第三次点击"); 
}, 
function() { 
alert("第四次点击"); 
});

三、事件委派中也只有两个方法,live()和die()两个方法,这两个方法是1.3版本之后才新增的,之前的版本是没有的。live()可以理解成元素组事件委派方法,比如li元素用live绑定了click事件。那么当在以后增加一个li到这个页面时,对于这个新增加的li,其click事件依然可用,而无需重新给这种新增加的元素绑定事件,在编写树形插件的时候相当有用。die()方法就很好解释,用来解除live()绑定的方法。

live(type,fn):live()中type参数目前只支持click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup事件。实例如下

HTML代码: 
<ul> 
<li>页面加载</li> 
<li>事件绑定</li> 
<li>事件委派</li> 
<li>事件切换</li> 
</ul> 
JQuery代码: 
$("li").live('click', function() { 
var index = $("li").index(this);//获取li的索引 
var text = $("li").eq(index).text();//根据单击项索引获得文本值 
alert("索引:" + index + ",文本值:" + text); 
});

die([type],[fn]):die()使用起来相当简单,一种删除所有live()事件,一种指定删除,两个参数是可选的。
$("#die").click(function() { 
$("li").die(); //删除所有live()事件 
$("li").die("click");//删除指定为click的live()事件 
$("li").die('click', function() { alert("删除live()事件成功") });//删除指定为click的live()事件并执行函数 
});

仅供参考,欢迎感兴趣的朋友参与讨论。下篇文章再说事件绑定,写一起太长了。未完待续........
Javascript 相关文章推荐
飞鱼(shqlsl) javascript作品集
Dec 16 Javascript
javascript 日历提醒系统( 兼容所有浏览器 )
Apr 07 Javascript
关于可运行代码无法正常执行的使用说明
May 13 Javascript
jquery下为Event handler传递动态参数的代码
Jan 06 Javascript
详谈 Jquery Ajax异步处理Json数据.
Sep 09 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
Jan 15 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
Feb 03 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
Jan 10 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
Nov 22 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
Jan 18 jQuery
JavaScript基于用户照片姓名生成海报
May 29 Javascript
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
初窥JQuery(一)jquery选择符 必备知识点
Nov 25 #Javascript
初窥JQuery-Jquery简介 入门了解篇
Nov 25 #Javascript
学习并汇集javascript匿名函数
Nov 25 #Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
Nov 25 #Javascript
XMLHTTPRequest的属性和方法简介
Nov 23 #Javascript
写给想学习Javascript的朋友一点学习经验小结
Nov 23 #Javascript
HTML颜色选择器实现代码
Nov 23 #Javascript
You might like
php实现检查文章是否被百度收录
2015/01/27 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
PHP magento后台无法登录问题解决方法
2016/11/24 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
JavaScript高级程序设计
2006/12/29 Javascript
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
商务英语专业自荐信
2013/10/14 职场文书
医药类个人求职的自我评价
2014/02/12 职场文书
党员民主评议总结
2014/10/20 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
检察院起诉意见书
2015/05/20 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
正则表达式基础与常用验证表达式
2022/06/16 Javascript