向JS对象添加和删除事件
this.removeEventListener = function (obj, ename, func) {
var store = obj[this.addEventListener.pre + ename];
if (!store) {
return;
}
var i = store.indexOf(func);
if (i < 0) {
return;
}
obj[this.addEventListener.pre + ename].splice(i, 1);
};
this.addEventListener = function (obj, enames) {
if (arguments.length < 2) {
return;
}
if (!this.addEventListener.pre) {
this.addEventListener.pre = "god_" + Math.random() * Number.MAX_VALUE;
}
if (typeof arguments[1] == "string") {
var ename = arguments[1];
var fullname = "on" + ename;
if (!(fullname in obj)) {
var store = this.addEventListener.pre + ename;
if (!obj[store]) {
obj[store] = [];
}
Object.defineProperty(obj, fullname, {
set: function (v) {
obj[store].push(v);
}
});
var notice = ename === "notice" ? "notice" : "notice" + ename;
obj[notice] = function () {
for (var i = 0; i < obj[store].length; i++) {
try {
obj[store][i].apply(obj, arguments);
} catch (e) {
console.log(e.message);
}
}
};
}
}
if (typeof arguments[2] === "string") {
var narguments = [obj];
for (var i = 2; i < arguments.length; i++) {
narguments.push(arguments[i]);
}
this.addEventListener.apply(this, narguments);
}
};
向JS对象添加和删除事件的更多相关文章
- 原生JS动态添加和删除类
原生JS动态添加和删除类 由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类 添加和和删除类有三种方法 首先等 ...
- 数组练习:各种数组方法的使用&&事件练习:封装兼容性添加、删除事件的函数&&星级评分系统
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js 为对象添加和删除属性
对于一个普通的js对象: var obj = { name:"mary", age:21 } 如果我们要对它添加新属性的话可以使用下列方式: obj.address = " ...
- 在js中为对象添加和删除属性
对于一个普通的js对象: var obj = { name:"mary", age:21 } 如果我们要对它添加新属性的话可以使用下列方式: obj.address = " ...
- vue.js简单添加和删除
这只是个简单的添加和删除,没有连接后台数据的 <%@ page language="java" contentType="text/html; charset=UT ...
- js动态添加和删除标签
html代码 <h1>动态添加和删除标签</h1> <div id="addTagTest"> <table> <thead& ...
- 关于给javascript对象添加、删除、修改对象的属性
以下是自己总结的几种方法 利用动态特性 function Person(){}; var person = new Person(); person.name = 'yy'; person.gende ...
- bootstrap table 生成的表格里动态添加HTML元素按钮,JS中添加点击事件,点击没反应---解决办法
bootstraptable中onExpandRow属性---js 方法添加的 html代码,然后给这代码里面的 元素 添加 事件,却获取不该元素.(称之为未来元素),由于是未来的 所以现在没有这个 ...
- JS:操作样式表2 :用JS实现添加和删除一个类名的功能(addClass()和removeClass())
var box = document.getElementById("box"); box.id = "pox"; 将id = “box”,改为id = “po ...
随机推荐
- pthread_attr_setdetachstate
pthread_create函数可以指定新创建线程的属性. pthread_attr_setdetachstate() set detach state attribute in thread at ...
- raw socket
一个很newbee的例子,可惜还得改 import sys import time import socket import struct import random def SendPacketDa ...
- R数据实战vehicles--1
新建项目vehicles-project 数据文件vehicles.csv与varlabels.txt放在项目文件中
- C语言通用双向循环链表操作函数集
说明 相比Linux内核链表宿主结构可有多个链表结构的优点,本函数集侧重封装性和易用性,而灵活性和效率有所降低. 可基于该函数集方便地构造栈或队列集. 本函数集暂未考虑并发保护. 一 ...
- PeopleTools预警程序制作
预警程序的概念:在主页上显示一个查询的结果.这个查询就是一个Record. 一.在Application Designer建一个项目,包含所有需要的Record. CUX_REC_BLRY Recor ...
- Linux 各文件夹介绍
http://www.cnblogs.com/amboyna/archive/2008/02/16/1070474.html linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命 ...
- Hibernate的关联映射——双向1-N关联
Hibernate的关联映射--双向1-N关联 对于1-N的关联,Hibernate推荐使用双向关联,而且不要让1的一端控制关联关系,而是用N的一端控制关联关系.双线的1-N关联和N-1关联是两种相同 ...
- [问题2014S14] 解答
[问题2014S14] 解答 首先, 满足条件的 \(\varphi\) 的全体特征值都为零. 事实上, 任取 \(\varphi\) 的特征值 \(\lambda\), 对应的特征向量为 \(0\ ...
- 开发板A/D转换原理
A/D转换器(Analog-to-Digital Converter)又叫模/数转换器,即使将模拟信(电压或是电流的形式)转换成数字信号.这种数字信号可让仪表,计算机外设接口或是微处理机来加以操作或是 ...
- sql2008 表名为全数字时查询报错
今天遇到个很奇葩的问题,在写一个应用程序时需要查询表的数据,但是表名是全数字的,直接查询会报错,于是想到给111的表名加一对中括号:即——>select * from [111] 刚开始还是报错 ...