自定义事件处理函数

解决了传统事件处理函数的覆盖问题、可读性问题、this传递问题

 1 //添加时间函数
 2 function addEvent(obj,type,fn){            //obj相当于window,type相当于onload,fn相当于function(){};
 3     var saved = null;            //用于保存上一个事件
 4     if (typeof obj[‘on‘ + type] == ‘function‘) {        //用于判断事件是否存在
 5         saved = obj[‘on‘ + type];        //保存上一个事件
 6     }
 7
 8      obj[‘on‘ + type] = function(){
 9          if (saved) saved();
10          fn.call(this);            //把this传过去,传统onclick会自动传
11      };
12 }
13
14 //移除事件函数
15
16 function removeEvent(obj,type){
17     if (obj[‘on‘ + type]) obj[‘on‘ + type] = null;
18 }
19
20
21 //事件切换器
22 addEvent(window,‘load‘,function(){
23     var box = document.getElementById("box");
24     addEvent(box,‘click‘,toBlue);
25 });
26
27     function toBlue(){
28         this.className = "blue";
29         removeEvent(this,‘click‘);
30         addEvent(this,‘click‘,toRed);
31     }
32
33     function toRed(){
34         this.className = "red";
35         removeEvent(this,‘click‘);
36         addEvent(this,‘click‘,toBlue);
37     }
时间: 2024-10-14 00:57:03

自定义事件处理函数的相关文章

jquery事件处理函数的参数问题:event对象和自定义参数

jquery中如果需要给按钮绑定click事件处理函数,那么我们可以使用如下的代码: $("#button1").click( function() { alert("I was clicked."); } ); 一般我们都会按照上面的写法,注册事件处理函数,很少给处理函数传递参数.但是如果我们需要事件更详细的信息,比如事件发生时鼠标的位置等,那么我们就必须要使用事件对象了. 在IE和FF浏览器下,我们可以使用event对象拿到更多的信息.在jquery中拿到eve

JavaScript移除绑定在元素上的匿名事件处理函数

前言: 面试的时候有点蒙,结束之后想想自己好像根本就误解了面试官的问题,因为我理解的这个问题本身就没有意义.但是当时已经有一些思路,但是在一个点上被卡住. 结束之后脑子瞬间灵光,想出了当时没有迈出的那一小步.所以不想计较这个问题本身的意义,单纯的想要把这个我理解错了的问题解决,就当是满足自己一个小小的愿望吧. 问题: 用addEventListener()和attachEvent()给一个DOM元素绑定事件处理程序时,如果传入一个匿名函数,那么用相应的removeEventListener()和

ashx ajax 与 自定义javascript函数

1.getUserPower为自定义javascript函数 获取权限  (1).ashx 处理程序的相对地址(必须是相对地址)  (2).au 权限名称  (3).classname 类名  (4).funsuccess 成功时做的事,函数. */ $.fn.getUserPower = function (operate, mdlName, funsuccess) { $(this).click(function (event) { if (cookie == "admin") {

1.2异常处理和服务配置、aop、日志、自定义事件处理

一.异常处理 2.1.数据验证 现在假设说要进行表单信息提交,肯定需要有一个表单,而后这个表单要将数据提交到 VO 类中,所以现在的基本实现如下: 1. 建立一个 Member.java 的 VO 类: package cn.study.microboot.vo; import java.io.Serializable; import java.util.Date; @SuppressWarnings("serial") public class Member implements S

自定义el函数

1.1.1 自定义EL函数(EL调用Java的函数) 第一步:创建一个Java类.方法必须是静态方法. public static String sayHello(String name){ return "Hello " + name; } 第二步:提供一个tld文件.(tld文件标签库文件.放置在WEB-INF 下) 在tld文件中定义: <!-- 自定义EL函数 --> <function> <!-- 函数名 --> <name>s

第十七篇:复制控制( 上 ) --- 自定义复制函数

前言 若要将a对象复制给b对象,编译器应当做何工作?C++初学者也许会直接说” a对象的成员复制给b对象的成员 “.在很多情况下,这种说法正确,事实上C++会给类定义一个默认的复制函数,它所做的工作也正是如此.但,下面问题来了:如果类的成员当中有指针,这种做法还行吗?本文将对这个问题作出实例分析. 一个典型错误示例 下面这个代码示例用来检验前言中所提到的问题: 1 #include <iostream> 2 #include <cstdlib> 3 #include <fst

jquery事件之事件处理函数

一.事件处理 方法名 说明 语法 (events 事件类型,data数据,handler 事件处理函数,selector 选择器) Bind( 为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数.没用on关键字 jQueryObject.bind( events [, data ], handler ) One 为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数.只绑定一次 jQueryObject.one( events [, data ], handler 

自定义数组函数

// 自定义数组函数Array.prototype.maxima.//Array.prototype为必须的,maxima为数组名.//调用时arr.maxima()这样调用window.onload = function() { Array.prototype.sum = function(){ for(var sum = i = 0 ; i < this.length; i ++){ sum += parseInt(this[i]); } return sum; }; Array.proto

创建sql自定义的函数及商品分页sql存储过程

--商品筛选时判断品牌ID是否存在 --select dbo.isValite(94,94)create function isValite(@brandId int,@bId int)returns intas begin Declare @rNumber int if @brandId = @bId set @rNumber = 1 else set @rNumber = 0 if @bId = 0 set @rNumber = 1 return @rNumberendgo --判断商品筛选