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 相关文章推荐
13 个JavaScript 性能提升技巧分享
Jul 26 Javascript
gridpanel动态加载数据的实例代码
Jul 18 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
Mar 05 Javascript
js中的cookie的读写操作示例详解
Apr 17 Javascript
JavaScript分秒倒计时器实现方法
Feb 02 Javascript
Vue.js鼠标悬浮更换图片功能
May 17 Javascript
详解angular 中的自定义指令之详解API
Jun 20 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
Jul 12 Javascript
详解webpack运行Babel教程
Jun 13 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
May 09 Javascript
extjs图表绘制之条形图实现方法分析
Mar 06 Javascript
SSM VUE Axios详解
Oct 05 Vue.js
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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
PHP模板引擎smarty详细介绍
2015/05/26 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
django fernet fields字段加密实践详解
2019/08/12 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
简单了解Python write writelines区别
2020/02/27 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
优秀团员自我评价范文
2014/04/23 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
自我检讨书怎么写
2015/05/07 职场文书
黄埔军校观后感
2015/06/10 职场文书
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL