javascript - 工作笔记 (事件绑定二)
在上篇中的事件绑定方法,相信大家都看到过了。
不过这里有点小小的问题,这些方法,变量都是全局的,难免会与其他的库或者方法发生冲突而被覆盖,因此,我在这里做了小小的封装,如下:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
(function(window){
var Yx = function(){ } Yx.evGuid = ; //绑定事件 Yx.prototype.bind = function(ele/*标签元素对象*/,evName/*方法名称,不带on前缀*/,evFunc/*方法*/){ if(!evFunc.$$guid) evFunc.$$guid = Yx.evGuid++;//为新添加的事件添加标识 if(!ele.events) ele.events = {};//为元素添加事件集合 evName = evName; if(!ele.events[evName]){ ele.events[evName] = {}; } if(ele.events[evName][evFunc.$$guid]==undefined) ele.events[evName][evFunc.$$guid] = {}; ele.events[evName][evFunc.$$guid] = evFunc; ele["on"+evName] = eventManager;//事件统一处理 } //解绑事件 Yx.prototype.unbind = function (ele/*标签元素对象*/, evName/*方法名称,不带on前缀*/, evFunc/*方法*/) { if(ele.events && ele.events[evName]){ delete ele.events[evName][evFunc.$$guid]; } } //事件管理 /* 这里是所有事件的入口函数,都是调用这个函数,通过它再调用对应函数 */ function eventManager(e){ var self = this;//当前对象 var e = e || window.event;//event对象 if(!e.stopPropagation){//IE下的阻止默认行为,事件冒泡 e.preventDefault = function() {this.returnValue = false;} e.stopPropagation = function() {this.cancelBubble = true;} } var evFuncs = self.events[e.type];//获取当前对象,指定的事件名称事件数组 for(var key in evFuncs){ evFuncs[key](e); } } window.yx = new Yx(); })(window); |
JavaScript Code
|
1
|
(function(window){/*...*/})(window);
|
这种写法是自执行函数,当函数创建后立刻执行,常用于创建命名空间
|
1
|
window.yx = new Yx();
|
在看这里,这里在window下定义了yx这个变量,其为YX这个类的一个对象,其实就是定义了一个名为yx的全局变量,这样我们就能通过yx.xxx来调用对应的方法了。语法如下:
|
1
2 3 4 5 6 7 |
var item = document.getElementById("test");//获取元素
yx.bind(item, "click", function (e) { |
javascript - 工作笔记 (事件绑定二)的更多相关文章
- javascript - 工作笔记 (事件四)
在javascript - 工作笔记 (事件绑定二)篇中,我将事件的方法做了简单的包装, JavaScript Code 12345 yx.bind(item, "click&quo ...
- javascript - 工作笔记 (事件绑定)
背景: 目前所做的项目,只能使用的是原生的javascript.对于javascript的事件绑定想必大家都懂得语法: 1,在标签中使用属性调用方法:<div onclick="AAA ...
- 了解javascript中的事件(二)
本文目录如下: 零.寒暄 一.事件的分类 二.事件代理 2.1 问题引出 2.2 什么是事件代理 2.3 完整示例 二.事件代理 三.事件代理思想的用处 四.总结 零.寒暄 这篇博客本该出现在两个月以 ...
- JavaScript学习笔记——事件
javascript事件基础和事件绑定 一.事件驱动 1.事件 javascript侦测到的用户的操作或是页面的一些行为(怎么发生的) 2.事件源 引发事件的元素.(发生在谁的身上)3.事件处理程序 ...
- 理解Javascript中的事件绑定与事件委托
最近在深入实践js中,遇到了一些问题,比如我需要为动态创建的DOM元素绑定事件,那么普通的事件绑定就不行了,于是通过上网查资料了解到事件委托,因此想总结一下js中的事件绑定与事件委托. 事件绑定 ...
- JavaScript学习笔记(十二)——箭头函数(Arrow Function)
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- JS学习笔记-事件绑定
一.传统事件模型 传统事件模型中存在局限性. 内联模型以HTML标签属性的形式使用,与HTML混写.这样的方式无疑造成了改动以及扩展的问题,已经非常少使用了. 脚本模型是将事件处理函数写到js文件里, ...
- 8. JavaScript学习笔记——事件
8. 事件 8.1 事件基础 /// 事件就是用户或浏览器自身执行的某种动作.诸如 click.load 和 mouseover,都是事件的名字.而响应某个事件的函数就叫做事件处理程序(或事件侦听器) ...
- javascript - 工作笔记 (事件三)
有关定义就不多说了,事件分两种 一,冒泡型事件 这是IE浏览器中事件模型的实现,顾名思义,就像水中的泡一样,自底而上,其经过的父元素都会触发对应的事件. 即:触发元素的父元素先于触发元素触发,看dem ...
随机推荐
- C++中数字与字符串之间的转换,别人的,
C++中数字与字符串之间的转换 1.字符串数字之间的转换 (1)string --> char * string str("OK"); char * p = st ...
- linux 删除和安装java
一.jdk1.4卸载 由于redhat Enterprise 5 中自带安装了jdk1.4的,所以在安装jdk1.6前我把jdk1.4的卸了,步骤如下: 1.打开终端输入#rpm -qa | gr ...
- css reset 以及哪些元素有默认margin padding值
很多网站在css reset 的时候有如下做法: body, ul, ol, li, p, h1, h2, h3, h4, h5, h6, form, label, dl, dt, dd,fields ...
- Constructor Prototype Pattern 原型模式(PHP示例)
当一个类大部分都是相同的只有部分是不同的时候,如果需要大量这个类的对象,每次都重复实例化那些相同的部分是开销很大的,而如果clone之前建立对象的那些相同的部分,就可以节约开销. 针对php的一种实现 ...
- windows程序设计读书笔记3——字符显示2
由于显示的字符可能会不全,我们很容易想到的一个解决办法是使用滚动条. 先看一下代码,再进行分析: /*------------------------------------------------- ...
- 《彻底搞定C指针》文档整理
一.变量存储 #include <stdio.h> int main(void) { ; printf(“%d\n”, i); printf(“%d\n”, &i); //十进制打 ...
- MySQL----alter table modify | change的不同
1.modify.change都可以修改列的属性:一同的是modify只能修改表的数据类型.change比它要牛逼一点它可以在修改数据类型的同时也修改列名. 2.modify 的语法:alter ta ...
- python 学习day6(面向对象)
博客部分内容转自:http://www.cnblogs.com/wupeiqi/p/4493506.html 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法 ...
- php快递查询
http://www.oschina.net/code/snippet_60100_25087 <?php class Express { private $expressname =array ...
- VirtualBox详细教程
转自:http://bbs.kafan.cn/thread-358294-1-1.html 1.Sun xVM VirtualBox简介 VirtualBox官方网站:http://www.virtu ...