Mootools 1.2教程 事件处理


Posted in Javascript onSeptember 15, 2009

今天我们开始第五讲,在上一讲(《Mootools 1.2教程(4)——函数》)中,我们学习了在MooTools 1.2中建立和使用函数的几种不同方式。下一步就是理解事件了。和选择器类似,事件也是建立互动界面的一个重要部分。一旦你掌握了一个元素,你需要去决定什么行为来触发什么效果。先把效果留着以后在讲,我们首先看一看中间步骤和一些常见的事件。
左键单击事件
左键单击事件是web开发中最常见的事件。超链接识别点击事件,然后把你带到另外一个URL地址。MooTools能够识别其他DOM元素上的点击事件,在设计和功能上给了你极大的灵活性。给一个元素添加一个点击事件的第一步:
参考代码:

// 通过$('id_name') 取得一个元素 
// 用.addEvent添加事件 
// ('click')定义了事件的类型 
$('id_name').addEvent('click', function(){ 
// 在这里添加点击事件发生时你要执行的任何代码 
alert('this element now recognizes the click event'); 
});

你也可以把这个函数从.addEvent();独立出来来完成相同的事情:
参考代码:
var clickFunction = function(){ 
// 在这里添加事件发生时你要执行的任何代码 
alert('this element now recognizes the click event'); 
} 
window.addEvent('domready', function() { 
$('id_name').addEvent('click', clickFunction); 
});

参考代码:
<body> 
<div id="id_name"> <! -- this element now recognizes the click event --> 
</div> 
</body>

注意:和超链接识别点击事件一样,MooTools的点击事件实际上也是识别“mouse up”,意味着当你鼠标松开是发生,而不是鼠标按下去的时候发生。这就给了用户一个机会去改变他们的主意——只要在松开之前把鼠标的指针从点击的元素上移开就可以了。
鼠标进入和离开事件
当鼠标停留在一个链接元素上时,超级链接还识别“hover”事件。通过MooTools,你可以给其他的DOM元素也添加一个悬停事件。通过把这个事件分为鼠标进入和鼠标离开事件,你可以更加灵活地根据用户的行为来操控DOM。
和以前一样,我们要做的第一件事就是把一个事件附加到一个元素:
参考代码:
var mouseEnterFunction = function(){ 
// 在这里添加事件发生时你要执行的任何代码 
alert('this element now recognizes the mouse enter event'); 
} 
window.addEvent('domready', function() { 
$('id_name').addEvent('mouseenter', mouseEnterFunction); 
});

鼠标离开事件也是同样的,这个事件在鼠标指针离开一个元素时发生。
参考代码:
var mouseLeaveFunction = function(){ 
// 在这里添加事件发生时你要执行的任何代码 
alert('this element now recognizes the mouse leave event'); 
} 
window.addEvent('domready', function() { 
$('id_name').addEvent('mouseleave', mouseLeaveFunction); 
});

删除一个事件
总有一些时候,你一旦不再需要那些事件,于是你需要从一个元素上删除一个事件。删除一个事件和添加一个事件一样容易,甚至连结构都是类似的。
参考代码:
// 和前一个示例一样
// 只不过把.addEvent换成了.removeEvent
$('id_name').removeEvent('mouseleave', mouseLeaveFunction);
textarea或者input中的按键事件
MooTools也可以让你识别文本域(textarea)和文本框(input)中的按键事件。其语法和我们上面看到的类似:
参考代码:
var function = keydownEventFunction () { 
alert('This textarea can now recognize keystroke events'); 
}; 
window.addEvent('domready', function() { 
$('myTextarea').addEvent('keydown', keydownEventFunction); 
});

上面的代码将会识别任何按键。要针对一个特定的按键,我们需要添加一个参数,然后使用一个if语句:
参考代码:
// 注意函数括号中的“event”参数 
var keyStrokeEvent = function(event){ 
// 下面的代码是说: 
// 如果按下的键为“k”,则做下面的事 
if (event.key == "k") { 
alert("This tutorial has been brought you by the letter k.") 
}; 
} 
window.addEvent('domready', function() { 
$('myInput').addEvent('keydown', keyStrokeEvent); 
});

如果需要其他的控制,比如“shift”键和“control”见,语法略有一点不同:
参考代码:
var keyStrokeEvent = function(event){ 
// 下面代码是说: 
// 如果按下的键是“shift”,则做下面的事 
if (event.shift) { 
alert("You pressed shift.") 
}; 
} 
window.addEvent('domready', function() { 
$('myInput').addEvent('keydown', keyStrokeEvent); 
});

参考代码:
<div id="body_wrap"> 
<input id="myInput" type="text" /> 
</div>

示例
这里是上面我们写过的一些可以执行的代码:
注意:你可以在单击示例上面试一下,不过不是在上面松开鼠标,而是把鼠标一直按着从区块上离开,然后再松开。注意一下它没有触发点击事件。
参考代码:
var keyStrokeEvent = function(event){ 
// 下面的代码是说: 
// 如果按下的键为“k”,则做下面的事 
if (event.key == 'k') { 
alert("This Mootorial was brought to you by the letter 'k.'") 
}; 
} 
var mouseLeaveFunction = function(){ 
// 在这里添加事件发生时你要执行的任何代码 
alert('this element now recognizes the mouse leave event'); 
} 
var mouseEnterFunction = function(){ 
// 在这里添加事件发生时你要执行的任何代码 
alert('this element now recognizes the mouse enter event'); 
} 
var clickFunction = function(){ 
// 在这里添加事件发生时你要执行的任何代码 
alert('this element now recognizes the click event'); 
} 
window.addEvent('domready', function() { 
$('click').addEvent('click', clickFunction); 
$('enter').addEvent('mouseenter', mouseEnterFunction); 
$('leave').addEvent('mouseleave', mouseLeaveFunction); 
$('keyevent').addEvent('keydown', keyStrokeEvent); 
});

参考代码:
<div id="click" class="block">左键单击(Click)</div><br /> 
<div id="enter" class="block">鼠标进入(Mouse Enter)</div><br /> 
<div id="leave" class="block">鼠标离开(Mouse Leave)</div><br /> 
<input id="keyevent" type="text" value="请输入字符'k'" />

更多学习……

下载一个包含你开始所需要的所用东西的zip包

包含MooTools 1.2核心库、一个外部JavaScript文件、一个简单的html页面和一个css文件。

更多关于事件的资料

MooTools给了你更多的关于事件的控制方法,比我们这里讲得要多得多。要学习更多内容,请查看下面几个链接:

  • MooTools文档中的Events部分
  • MooTools文档中的Element.Events部分
  • 还有,阅读一下w3school网站上关于JavaScript事件的内容
Javascript 相关文章推荐
jQuery 源码分析笔记(3) Deferred机制
Jun 19 Javascript
PHPExcel中的一些常用方法汇总
Jan 23 Javascript
7个jQuery最佳实践
Jan 12 Javascript
js提交form表单,并传递参数的实现方法
May 25 Javascript
js改变透明度实现轮播图的算法
Aug 24 Javascript
JS匿名函数类生成方式实例分析
Nov 26 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
Jul 07 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
Jul 04 Javascript
详解vue中async-await的使用误区
Dec 05 Javascript
Vue最新防抖方案(必看篇)
Oct 30 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
Aug 10 Javascript
Vue实现开关按钮拖拽效果
Sep 22 Javascript
Mootools 1.2教程 函数
Sep 15 #Javascript
Mootools 1.2教程(3) 数组使用简介
Sep 14 #Javascript
Mootools 1.2教程(2) DOM选择器
Sep 14 #Javascript
MooTools 1.2介绍
Sep 14 #Javascript
IE与Firefox在JavaScript上的7个不同写法小结
Sep 14 #Javascript
JavaScript 函数调用规则
Sep 14 #Javascript
prototype与jquery下Ajax实现的差别
Sep 13 #Javascript
You might like
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
react 组件传值的三种方法
2019/06/03 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
python使用心得之获得github代码库列表
2014/06/25 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
python如何查看安装了的模块
2020/06/23 Python
浅析Python 条件控制语句
2020/07/15 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
Champion官网:美国冠军运动服装
2017/01/25 全球购物
毕业生自我鉴定
2013/12/04 职场文书
电子专业求职信
2014/06/19 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
关于的python五子棋的算法
2022/05/02 Python