Ajax实战:绑定事件处理函数代码

JavaScript文件(代码清单4-3)采用编程方式将事件绑定到键上。

代码清单4-3 musical.js

window.onload调用了assignKeys()函数(可以在这个文件中直接定义window. onload,但是这限制了它的可移植性)。通过唯一的ID来发现keyboard元素,然 后使用getElementsByTagName()遍历访问其内部所有的DIV元素。这需要知道一 些关于页面结构的知识,但是它允许页面设计师自由地在页面中将键盘DIV以希 望的方式任意移动。

表示键的DOM元素返回一个单独的字符串作为className属性。我们使用内建 的String. split函数将其转换为一个数组,并且检查元素是否是musicalButton 类。之后读取样式的另一部分——它代表了键所演奏的音符 ——并且作为一个额外的属性附加在DOM节点上,这个属性可以被事 件处理函数获得。

通过Web浏览器演奏音乐需要相当高的技巧,在这里,我们仅仅对键盘下的控 制台进行了编程,用innerHTML已经足够了。图4-4显示了活动中的音乐键盘。这 里我们实现了很好的角色分离,假设页面设计师去掉了页面上某个地方的键盘和 控制台的DIV标签,只要页面包括了样式表和JavaScript,应用程序仍然可以工 作,偶然打破事件逻辑的风险是很小的。HTML页面有效地成为了一个模版,我们 向其中注入了变量和逻辑,这提供了一个保持逻辑与视图相分离的好方法。我们 已经手工完成了这个例子,以此来示范工作机制的细节。在生产环境中,你可能 喜欢使用几个解决了同样问题的第三方库。

图4-4 运行于浏览器中的音乐键盘应用。顶部的彩色区域被映射到音符上, 当鼠标在上面移动时,音符打印在下面的控制台区域

Rico框架(www.openrico.org)有一个Behavior对象的概念,它以DOM树的特定 部分为目标,为它们添加交互性。3.5.2节曾简单地考察了Rico Accordion的行 为。

类似的分离HTML标记和交互性的方法可以通过Ben Nolan的Behaviour库来实 现(参见本章“资源”一节)。这个库允许基于CSS选择器规则将事件 处理函数代码分配给DOM元素(见第2章)。在之前的例子中,assignKeys()函数以 keyboard作为id采用编程方式选择文档元素,然后使用DOM处理方法得到它直接 包含的所有DIV元素。我们可以使用一个CSS选择器来表达:

#keyboard div

使用CSS选择器可以给所有的keyboard元素设置样式。使用Behaviour.js库, 也可以用相同的方法应用事件处理函数,如下:

大部分逻辑与前面的例子是一样的,但是对CSS选择器的使用提供了一种采用 编程方式定位DOM元素的简明的替代方法,特别是当需要立即添加几个行为的时 候。

这种方法保持了逻辑与视图的分离,但是它也可能将视图和逻辑混在一起, 下面我们将会看到这一点。

时间: 2024-08-30 19:31:28

Ajax实战:绑定事件处理函数代码的相关文章

jQuery动态添加的元素绑定事件处理函数代码_jquery

我当时的处理方法是在添加的时候手工绑定事件处理函数.不过新版的jquery已经添加了这个功能.我们已经不需要为此烦恼了. 参考:http://api.jquery.com/live/ 以前我们定义事件,比如为元素定义单击事件是这样写的: 复制代码 代码如下: $('input').click(function () { //处理代码 }); 或 复制代码 代码如下: $('.clickme').bind('click', function() { // Bound handler called.

JQuery入门——用bind方法绑定事件处理函数应用介绍_jquery

1.bind()功能是为每个选择元素的事件绑定处理函数,其语法如下:bind(type, [data], fn) 其中type为一个或多个类型的字符串,如click或change,也可以自定义:可以被type调用的类型包括blur.focus.load.resize.scroll.unload.click.dbclick.mousedown等事件.参数data是作为event.data属性值传递对象的额外数据对象.参数fn是绑定到每个选择元素的事件中的处理函数. 2.示例代码: 复制代码 代码如

JQuery入门——用one()方法绑定事件处理函数(仅触发一次)_javascript技巧

1.one()方法功能是为所选的元素绑定一个仅触发一次的处理函数,其调用的语法格式为:one(type, [data], fn) 其中参数type为事件类型,即需要触发什么类型的事件:参数data为可选参数,表示作为event.data属性值传递给事件对象的额外数据对象:fn为绑定事件时所要触发的函数. 2.示例代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h

JS 事件绑定函数代码_javascript技巧

主要解决了 浏览器兼容,现在可以兼容IE6 7 8 FF 谷歌(废话) IE浏览器里,this指向问题. 直接上代码吧! 复制代码 代码如下: var bind=function(object,type,fn){ if(object.attachEvent){//IE浏览器 object.attachEvent("on"+type,(function(){ return function(event){ window.event.cancelBubble=true;//停止时间冒泡 o

Ajax实战:在浏览器端应用MVC

我们在前面一直将注意力集中于应用中的小细节.现在可以扩大一下视野, 考虑启动时交付在浏览器上的完整的JavaScript应用.这也可以按MVC模式进行 结构化,由于清晰地分离了关注点,得到较大的优化. 在这个级别,模型由业务领域对象组成,视图是整个可编程处理的页面,控 制器是将UI和领域对象相连接的代码中所有事件处理函数的组合.图4-2展示了 这个级别的MVC操作.这可能是对于Ajax开发者最重要的MVC使用方式,因为它很 自然地适应了Ajax富客户应用.我们将考察MVC模式的这种使用方法的细节

jQuery Ajax 全局调用封装实例代码详解_jquery

有一种情况:全站都要用异步方式来调用 数据,提交数据,那么你每次操作 都会要$.ajax({.....}) 写重复的方法 和代码,冗余太大, 也浪费时间,虽说你有代码自动提示补全,但真的不优雅,身为前端极客,是不能允许的! [嘿嘿!虽说我现在基本不用jquery了 ,不过异步概念 是永远要用的,就帮助下新人] jQuery Ajax通用js封装 第一步:引入jQuery库 <script type="text/javascript" src="/js/jquery.mi

JS中关于事件处理函数名后面是否带括号的问题_javascript技巧

今天总结一个关于事件处理程序的小细节.首先回顾一下事件处理的一些概念. JS中的事件处理(事件绑定)就是让某种或某些事件触发某些活动.有两种常见的形式,分别是DOM Level 0 和DOM Level 2.这两种方式最大的区别就在于DOM 0级事件处理只能用于事件冒泡,而DOM 2级事件处理却可以通过设置第三个参数来分别支持事件冒泡和事件捕获. DOM 0级事件处理一般是直接把一个函数分配给一个事件处理程序,既可以在元素中直接分配一个事件处理程序,如方式一所示;也可以在脚本中把函数分配给事件处

元素的内联事件处理函数的特殊作用域在各浏览器中存在差异_javascript技巧

标准参考 无. 问题描述 在一个元素的属性中绑定事件,实际上就创建了一个内联事件处理函数(如<h1 onclick="alert(this);"...>...</h1>),内联事件处理函数有其特殊的作用域链,并且各浏览器的实现细节也有差异. 造成的影响 如果在元素的内联事件处理函数中使用的变量或调用的方法不当,将导致脚本运行出错. 受影响的浏览器 所有浏览器 问题分析 1. 内联事件处理函数的作用域链 与其他函数不同,内联事件处理函数的作用域链从头部开始依次是:

Ajax实战:管理多个事件回调

在实现我们自己的解决方案之前,我们先通过一个简单的例子来了解问题所在.代码清单4-7显示了一个简单的Web页面,其中一个大的DIV区域以两种方式响应鼠标的移动事件. 代码清单4-7 mousemat.html 首先,它在writeStatus()函数中更新了浏览器的状态条,然后在drawThumbnail()函数中通过在旁边小的缩略视图区域中重新定位一个点,更新自己在这个区域的映像,以此来复制鼠标光标位置的移动.图4-6显示了活动中的页面. 这两个行为是彼此独立的,我们希望能够将这些行为和鼠标移