`
muyu
  • 浏览: 223633 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

bindAsEventListener的用法

阅读更多

2009-6-8号更新:

对于jquery,绑定事件的代码为:

$('#level').bind('change', this, function(e){e.data.changeCity(e)});
//changeCity 为对象的方法

 

 

------------------------------------------------------------

http://www.prototypejs.org/api/function/bindAsEventListener

 

这是prototype的文档。

 

下面看文档的例子:

 

var obj = { name: 'A nice demo' };

function handler(e) {
  var tag = Event.element(e).tagName.toLowerCase();
  var data = $A(arguments);
  data.shift();
  alert(this.name + '\nClick on a ' + tag + '\nOther args: ' + data.join(', '));
}

Event.observe(document.body, 'click', handler.bindAsEventListener(obj, 1, 2, 3));
// Now any click on the page displays obj.name, the lower-cased tag name
// of the clicked element, and "1, 2, 3".

 

handler是加载的事件处理函数,当该函数带参数时,实现方法如下:

 

第一个参数为要加载的目标对象,以后为参数数组。在handler函数里,要把参数先格式化为数组,移除第一个(即目标对象),剩下的才是handler函数感兴趣的参数。

 

下面贴一段我在开发过程中,用到的方法:

 

function MoviePlayer(groupName, initPosLeft, btnCount) {
  ......
  var self = this;
  for(i=1; i<=this.btnCount; i++) {
    Event.observe($('player_pet_' + this.groupName + '_' + i), 'mouseover', self.changeSlide.bindAsEventListener(self, i));
    Event.observe($('player_pet_' + this.groupName + '_' + i), 'mouseout', self.startAuto.bindAsEventListener(self));
  }
}

MoviePlayer.prototype.changeSlide = function() {
  ......
  var data = $A(arguments);
  data.shift();
  this.current_id = data;
  ......
}

 

 

注意两点:

  1. 由于加载的事件函数是当前对象的某个方法,this不能直接出现在prototype封装的observe方法里,否则,this会被认为是Event的,用“var self = this;”来实现;
  2. 由于只有一个参数,再shift()掉第一个元素后,直接将data作为一个数字来处理,而不是data[0],这有点投机啦。
分享到:
评论

相关推荐

    Prototype(注解)

    ### Prototype(注解) #### 知识点概览 1. **Prototype JavaScript 框架简介** ...- **应用场景**:当需要将普通的函数绑定到 DOM 元素的事件上时,可以使用此方法确保正确的行为,特别是在跨浏览器开发中。

    类之Prototype.js学习

    - 使用`bindAsEventListener`方法绑定事件监听器。 ```javascript student.onstudy = watchStudy.bindAsEventListener(this); function watchStudy(event) { alert("watch study"); } ``` 这里需要注意的是...

    Prototype1.5.1使用手册

    《Prototype 1.5.1使用...总结,Prototype 1.5.1使用手册涵盖了该库的主要特性和用法,对于前端开发者来说,是一个不可或缺的学习和参考资料。通过深入学习和实践,可以极大地提升开发效率,创造出更优秀的Web应用。

    prototype 1.3 源码解读

    - **`Object.prototype.extend`**:该方法使得任何对象都可以直接使用 `extend` 方法来自身扩展其他对象的属性。这是一种链式调用的方式,使得代码更加灵活。 #### 6. Function.prototype.bind 方法 ```javascript...

    JavaScript仿Windows关机效果

    - 在绑定事件时还使用了`bindAsEventListener`方法,确保上下文的正确传递。 5. **状态重置**: - `reset`函数用于清除弹出层内的内容,并将其隐藏,以便下次使用时能重新加载数据。 6. **动态内容插入**: - ...

    mootools/prototype的动画效果库moo.fx

    需要注意的是,由于两者的命名空间可能会冲突,因此在混合使用时需要特别小心,可能需要使用`Prototype.Function.prototype.bindAsEventListener`这样的方法来确保事件处理的兼容性。 总的来说,Moo.fx作为MooTools...

    prototype.chm+jquery详解

    包括prototype.chm文档,及prototype与jquery详解"表明压缩包中可能包含了一个名为"prototype.chm"的帮助文件,这通常是一个Windows平台下的HTML帮助文档,用于详细介绍Prototype库的使用方法和API。同时,还有对...

    JS实现的简易拖放效果示例

    在本文中,我们将探讨如何使用JavaScript实现一个简单的拖放效果。拖放功能是网页交互中的一个重要特性,允许用户通过鼠标或触控操作移动页面元素,提高用户体验。以下是一些关键知识点和代码实现细节: 1. **事件...

    prototype原代码PDF格式

    - **bindAsEventListener**:专门用于事件监听器的绑定,自动处理浏览器兼容性问题。 ### 4. 数值扩展 #### 4.1 `Number.prototype` - **toColorPart**:将数字转换为十六进制颜色的一部分。 - **succ**:返回当前...

    百度空间的popup效果分析第1/3页

    3. JavaScript的bind方法:这里展示了bind方法的基本用法,这个方法可以将函数绑定到特定的对象上,以便在回调函数中正确引用该对象。这也是前端JavaScript编程中不可或缺的一部分,尤其是在事件处理中。 4. 事件...

    Prototype学习笔记(最新整理)

    `Function` 类扩展包括 `bind`, `bindAsEventListener`, `defer` 等方法,这些方法使得函数的绑定和延迟执行变得更加容易。 ##### 4.5. 对 String 类的扩展 字符串类扩展包括 `trim`, `startsWith`, `endsWith`, `...

    prototype 开发应用手册,笔记,prototype.js文件下载

    通过引入这个文件,开发者可以立即使用Prototype提供的各种功能。 二、Prototype中的核心概念 1. Object.extend:这是Prototype中最基本的扩展方法,用于将一个对象的属性复制到另一个对象上,实现对象的继承。...

    js通过八个点 拖动改变div大小的实现方法

    虽然具体代码片段未完全展示,但提到了`Bind`函数和`BindAsEventListener`函数的使用,这些函数用于将事件处理程序绑定到元素上。 6. 自定义函数封装:代码示例中使用了多个自定义函数(如`Css`, `Extend`, `Bind`,...

    使用原生JS实现弹出层特效

    为此,使用`addEventHandler`方法监听窗口的`scroll`事件,并将`addjustPosition`函数绑定为事件处理函数。这样,每当窗口滚动时,弹出层都会自动重新定位。当弹出层隐藏时,应通过`removeEventHandler`移除滚动事件...

    用js实现的仿sohu博客更换页面风格(简单版)

    `mouseover`、`mouseout`和`click`事件的处理函数分别是`mouseover`、`mouseout`和`click`,它们使用了`bindAsEventListener`方法将当前`PopWin`实例绑定为事件处理函数的上下文,确保在事件触发时可以访问到`PopWin...

    prototypejs1.6.1_rc2最新版

    6. **Function对象增强**:PrototypeJS还为Function对象增加了许多方便的功能,如`bind()`, `bindAsEventListener()`, ` curry()`, `delay()`, `wrap()`等,提高了函数的灵活性和可复用性。 7. **Selectors API**:...

    JavaScript实现网页对象拖放功能的方法

    5. **事件处理兼容性**:由于不同浏览器的事件对象略有不同,使用`BindAsEventListener`函数可以确保回调函数始终在正确的作用域内执行,同时处理IE和其他浏览器的事件对象差异。 在实际应用中,可能还需要考虑其他...

    JS 遮照层实现代码

    使用方法 - **初始化**:`Overlayer.Initialize({ZIndex:100, Background:'#666', Opacity:80})`。 - **显示遮照层**:`Overlayer.Show()` 或 `Overlayer.Initialize({ZIndex:100, Background:'#666', Opacity:80}...

    prototype-js

    在本文中,我们将深入探讨Prototype JS的核心概念、主要功能以及如何有效地使用它。 ### 1. DOM操作 Prototype JS 改进了JavaScript对DOM(Document Object Model)的操作。它提供了一套简洁的方法来查找、创建和...

Global site tag (gtag.js) - Google Analytics