您的位置: 首页 > 技术文档 > 网页制作 > JavaScript框架比较:事件处理
JavaScript框架比较:Ajax 回到列表 JavaScript框架比较:实用函数
 JavaScript框架比较:事件处理

作者:dishuipiaoxiang 时间: 2010-04-28 文档类型:翻译 来自:Denis'Blog

每个JavaScript框架都实现跨浏览器的事件处理,鼓励你摆脱旧式的内联附加事件而使用精简的线性方法。看看清单6的jQuery例子,使用hover事件高亮显示div元素。

清单6:使用jQuery附加hover事件

$('#the-box').hover(function() {
   $(this).addClass('highlight');
}, function() {
   $(this).removeClass('highlight');
});

这是jQuery的一个特殊事件,你会发现它提供了两个函数。第一个在onMouseOver事件触发时调用,第二个函数在onMouseOut事件触发时调用。这是因为hover没有标准的DOM事件。让我们看看更为典型的事件,如click(瞧瞧清单7):

清单7:使用jQuery附加click事件

$('#the-button').click(function() {
   alert('You pushed the button!');
});

正如你看到的那样,实例中只有一个函数参数。jQuery中大多数事件均采用同样的方式处理,在jQuery中使用事件处理程序,上下文指的是触发事件的哪个对象。一些框架并不以这种方式工作,拿Prototype来说,清单7中的代码看起来就像清单8中的那样。

清单8:使用Prototype附加click事件

$('the-button').observe('click', function(e) {
    alert('You pushed the button!');
});

你首先会注意到,没有click函数,而是一个observe函数,它在引用自身之前接受一个事件参数。您还会注意到该函数接受一个参数e,这里的上下文指的是触发事件的元素。看看它如何工作,让我们用Prototype重写清单6中的代码(看清单9)。

清单9:使用Prototype附加悬停事件

$('the-box').observe('mouseover', function(e) {
    var el = Event.element(e);
    el.addClassName('highlight');
});
$('the-box').observe('mouseout', function(e) {
    var el = Event.element(e);
    el.removeClassName('highlight');
});

jQuery也不同,你只需要使用$函数得到上下文变量,Prototype库则使用Event.element() 函数。此外,你注意到你需要将mouseover和mouseout 事件分开。

通过该文章的一些教程,你可以看到函数以内联的方式创建,并不命名。这意味着它不能重复使用,Prototype的悬停示例也给了我们一个如何使用命名函数的机会。清单10说明了这个方法。

清单10:使用Prototype改进悬停事件

function toggleClass(e) {
    var el = Event.element(e);
    if(el.hasClassName('highlight'))
        row.removeClassName('highlight');
    else
        row.addClassName('highlight');
}

$('the-box').observe('mouseover', toggleClass);
$('the-box').observe('mouseout', toggleClass);

您会注意到,此时你只需定义一个函数。它同时被mouseover和mouseout事件调用。该函数根据元素是否有“highlight”的类名,并基于结果添加或删除之。你也会注意到,参数e隐式传递。换句话说,你给observe函数传递了一个不明确的参数。

转载地址:http://www.denisdeng.com/?p=720

原文地址:http://www.ibm.com/developerworks/web/library/wa-jsframeworks/index.html

本文链接:http://www.blueidea.com/tech/web/2010/7551.asp 

出处:Denis'Blog
责任编辑:bluehearts

◎进入论坛网页制作WEB标准化版块参加讨论,我还想发表评论

相关文章 更多相关链接
JavaScript框架比较:Ajax
JavaScript框架比较:实用函数
JavaScript框架比较:DOM操作
JavaScript框架比较:DOM遍历
JavaScript框架比较:选择器
作者文章 更多作者文章
JavaScript框架比较:Ajax
JavaScript框架比较:实用函数
JavaScript框架比较:DOM操作
JavaScript框架比较:DOM遍历
JavaScript框架比较:选择器
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
经典设计案例:丢猫千万别找设计师
UI AWARD 2010提名奖名单揭晓
网站设计解构
赢在设计
WAP2.0网页设计中的交互细节
画在信封上
数据同步算法研究
Flash ActionScript 3.0溢彩编程
用ps作简单的作品展示页面
CSS定位机制之一:普通流
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文暂时没有评论和评分

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容