初窥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 相关文章推荐
JavaScript 参考教程
Dec 29 Javascript
扩展jQuery 键盘事件的几个基本方法
Oct 30 Javascript
php中给js数组赋值方法
Mar 10 Javascript
js判断浏览器版本以及浏览器内核的方法
Jan 20 Javascript
Bootstrap面板使用方法
Jan 16 Javascript
js实现五星评价功能
Mar 08 Javascript
微信小程序页面传值实例分析
Apr 19 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
May 22 Javascript
js实现随机点名系统(实例讲解)
Oct 18 Javascript
vue-router中scrollBehavior的巧妙用法
Jul 09 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 Javascript
原生JS 实现的input输入时表格过滤操作示例
Aug 03 Javascript
初窥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
2019十大人气国漫
2020/03/13 国漫
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
vuejs如何配置less
2017/04/25 Javascript
Vue2.x中的Render函数详解
2017/05/30 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
python 列表降维的实例讲解
2018/06/28 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
文职个人求职信范文
2013/09/23 职场文书
质检员的岗位职责
2013/11/15 职场文书
管理学专业个人求职信范文
2013/12/13 职场文书
小松树教学反思
2014/02/11 职场文书
总会计师岗位职责
2014/02/19 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
工程承诺书怎么写
2014/05/24 职场文书
销售团队口号大全
2014/06/06 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
爱护公物主题班会
2015/08/17 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书