作家
登录

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

作者: 来源:www.28hudong.com 2013-03-30 01:09:38 阅读 我要评论

当然它的优点并不只在于这点,使用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()事件并执行函数 }); 仅供参考,欢迎感兴趣的朋友参与讨论。下篇文章再说事件绑定,写一起太长了。未完待续........

  推荐阅读

  js RuntimeObject() 获取ie里面自定义函数或者属性的集合

复制代码 代码如下: var gb1 = 10; this.gb2 = 20; function gb3() {}; (function() { var ro = RuntimeObject(), ret = [], for(p in ro) { ret.push(p); } alert('global var List: ' + ret.join('n')); })(); >>>详细阅读


本文标题:初窥JQuery(二) 事件机制(1)

地址:http://www.17bianji.com/kaifa2/JS/25345.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)