初窥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 相关文章推荐
替代window.event.srcElement效果的可兼容性的函数
Dec 18 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
Apr 01 Javascript
验证码按回车不变解决方法
Mar 29 Javascript
js对象与打印对象分析比较
Apr 23 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
Sep 10 Javascript
使用控制台破解百小度一个月只准改一次名字
Aug 13 Javascript
bootstrap监听滚动实现头部跟随滚动
Nov 08 Javascript
JavaScript 正则命名分组【推荐】
Jun 07 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
vue自定义指令实现方法详解
Feb 11 Javascript
jQuery动态生成的元素绑定事件操作实例分析
May 04 jQuery
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 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制作静态网站的模板框架
2006/10/09 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
vue中使用GraphQL的实例代码
2019/11/04 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
20招让你的Python飞起来!
2016/09/27 Python
python PyTorch预训练示例
2018/02/11 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
教师求职信范文分享
2013/12/27 职场文书
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
初中生评语大全
2014/04/24 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
婚前协议书范本
2014/10/27 职场文书
社区服务理念口号
2015/12/25 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python