在一个事件上绑定多个函数
来源:互联网 发布:欧陆风云4有没有mac 编辑:程序博客网 时间:2024/06/04 19:14
昨天晚上,我的朋友"加班苏"(因为老加班,呵呵)问我一个问题:他需要
在window.onload事件上绑定两个函数,但只能成功绑定一个。他的代码如下:
// 有两个函数 foo1() 和 foo2()
window.onload = foo1;
window.onload = foo2;
运行结果是,只有foo2()函数被执行了。但本意是要先执行完foo1(),再执行foo2()。
以下是我分析和解决的过程:
分析:他的代码之所以行不通,是因为第二次指定的函把第一次指定的函数替换
掉了,就相当于:
var xx; // 在JavaScript中,函数也是一个对象,也可以赋给一个变量
xx = foo1;
xx = foo2;
解决问题的思路:如果想在一个件上绑定两个函数,foo1()和foo2(),可以先声
明一个函数bar():
function bar(){
foo1();
foo2()
}
然后绑定bar()函数到事件上:
window.onload = bar;
扩展:这样的前提是事先知道有多少个函数要绑定,但如果不知道呢?那就可以
用下面这个方法:先写一个函数 binding(eventType, func) 用于绑定一个函数到
指定的事件上:
/**
* 绑定一个事件处理函数到指定的事件上。
*
* @param eventType 要绑定函数的事件,
* 如window.onload代表浏览器装载完文档后触发的事件
* @param func 要绑定的函数
*/
function binding(eventType, func)
{
if (!window.onload) {
// 如果还未绑定函数,就可以直接绑定
window.onload = func;
}
else
{ // 如果已经绑定了,就绑定一个匿名函数,作用是:
// 先调用原绑定的函数,再调用本次将要绑定的函数
var old = window.onload;
window.onload = function(){
old();
func();
}
}
}
然后,每次想往某个事件上绑定事件时,都调用这个函数来绑定就可以了:
binding(window.onload, foo1);
binding(window.onload, foo2);
呵呵,这是方法是看FCKeditor的源码时学到的。
- 在一个事件上绑定多个函数
- js一个事件绑定多个函数
- 怎么在一个ip上绑定多个域名
- Jquery中的事件与传统的javascript中事件区别: Jquery中事件允许绑定多个函数,而javascript中一个事件只能绑定一个函数.
- 事件封装(多个函数绑定一个事件,估计这样解释不对)
- 把多个JavaScript函数绑定到onload事件处理函数上
- JQuery一个对象绑定多个事件
- jquery一个控件绑定多个事件
- JQuery一个对象绑定多个事件
- 一个命令按钮绑定多个事件
- 一个元素绑定多个点击事件
- 如何绑定多个事件在 onload
- 同一元素上,通过v-on绑定多个相同事件的函数
- 将函数绑定在window.onload事件上
- asp.net中在一个控件上绑定多个字段
- 把多个JavaScript函数帮顶到一个onload事件处理函数上
- js多个对象绑定一个事件的方法
- js多个对象绑定一个事件的方法
- 'King's Bounty: Armored Princess' - 16 New Screens
- 夏敏捷2008科研成果
- VB 实现与 SQL Server 数据库的访问的详细步骤
- 常用的各个进制间转换
- TheBrain.Technologies.PersonalBrain.v5.0.2.6.Incl.Keygen-b0b1
- 在一个事件上绑定多个函数
- Groovy探索 对字符串编写Groovy风格的代码
- 用C#编写ActiveX控件(一)
- 解决IIS中HTTP/1.1 500 Server Error错误的方法
- 从XML文件加载一个XML DOM对象
- LoadDOM.cpp源代码
- 通过对POI组件,实现对Excel表格合并的读写操作
- 内容管理系统YESTEM CMS
- NNT公司管理系统