javascript通用事件封装
随着最近几年Html5的兴起,越来越多的应用采用html5进行实现,一个优秀的网页应用不但需要美观简洁的UI界面,更需要一个良好的交互。网页应用大部分的交互需要用javascript事件进行实现。虽然当前存在大量的且功能强大的javascript库,但这些类库或者框架都经过函数封装,对于用户而言隐藏了内部实现机制(虽然可以查看和研究源代码,但是有多少童鞋能潜心研究呢?)。定制或者构建一个自己的小javascript库,对于童鞋们提升前端开发水平来说,也具有重要的价值。
废话不多说,下面给出一个通用的javascript事件工具库,并通过注释来了解原生的javascript用法:
//javascript通用事件封装
var myEventUtil={
//版本
version:'1.0',
//日期
datetime:'2015-8-25',
author:'jack Wang',
//这里均用冒泡事件模型
//添加事件函数,调用方法addEvent(btn1,'click',showmsg);
addEvent:function(ele,event,func){
//用能力检测进行跨浏览器兼容处理
//DOM 2 事件处理
if(ele.addEventListener)
{
//false表示冒泡事件模型
ele.addEventListener(event,func,false);
}
else if(ele.attachEvent)
{
//若是click事件,IE为onclick
ele.attachEvent('on'+event,func);
}
else
{
//DOM 0级事件,兼容老浏览器
//not ele.'on'+event=func;
//js中.可以用[]进行代替
ele['on'+event]=func;
}
},
//删除事件函数
delEvent:function(ele,event,func){
if(ele.removeEventListener)
{
ele.removeEventListener(event,func,false);
}
else if(ele.detachEvent){
ele.detachEvent('on'+event,func);//IE
}
else
{
//DOM 0级事件,兼容老浏览器
ele['on'+event]=null;
}
},
//获取触发事件的源DOM元素
getSrcElement:function(event){
//如果event.target不为空,则返回event.target值
//否则返回event.srcElement
return event.target || event.srcElement;
},
//获取事件类型
getType:function(event)
{
return event.type;
},
//获取事件
getEvent:function(event){
//window.event为兼容IE版本
return event?event:window.event;
},
//阻止事件冒泡
stopBuble:function(event){
if(event.stopPropagation){
event.stopPropagation();
}
else{
event.cacelBuble=false;//IE
}
},
//禁用默认行为
preventDefault:function(event){
if(event.preventDefault){
event.preventDefault();
}
else
{
event.returnValue=false;//IE为属性
}
},
//根据元素ID名称获取元素
$id:function(eleid){
return document.getElementById(eleid);
},
//根据ClassName获取元素数组,提供父元素能提高检索效率
//用法:var eles=getByClass('foo');
getByClass:function(className,parent){
//如果不提供parent,则返回顶级元素document
var oParent=parent?this.$id(parent):document;
//能力检测
if(oParent.getElementsByClassName)
{
//通过在字符串中使用空格分隔类,也可以匹配多个类,
//下面的代码挑选出了所有既拥有foo类名称又拥有bar类名称的元素:
//var eles = document.getElementsByClassName('foo bar');
return oParent.getElementsByClassName(className);
}
else
{
var retEles=[];
//获取父元素下的所有子元素
var childs=oParent.getElementsByTagName('*');
for(var i=0,len=childs.length;i<len;i++){
//元素className类名匹配
if(childs[i].className==className){
retEles.push(childs[i]);
}
}
return retEles;
}
},
//根据ClassName获取首元素
getFirstByClass:function(className,parent){
//var eles=getByClass(className,parent);
//不加this.往往报getByClass未定义的错误
var eles=this.getByClass(className,parent);
return eles[0];
},
//获取版本信息
getVersion:function(){
return 'Version:'+this.version;
} };
我们需要知其然,更需要知其所以然。只有这样,才能更好的进行前端javascript开发。最后给大家推荐一个IT视频学习网站:慕课
javascript通用事件封装的更多相关文章
- javascript中事件总结&通用的事件侦听器函数封装&事件委托
前言: JAVASCRIPT与HTML之间的交互是通过事件来实现的.事件,就是文档或浏览器窗口中发生的一些特定交互瞬间.可以使用侦听器( 或处理程序 )来预定事件,以便事件发生时执行相应的代码.这种在 ...
- JS通用事件监听函数
JS通用事件监听函数 版本一 //把它全部封装到一个对象中 var obj={ readyEvent:function (fn){ if(fn==null){ fn=document; } var o ...
- JavaScript的事件概述以及事件对象,事件流
事件处理程序 JavaScript 事件对象是由访问 Web 页面的用户引起的一系列操作,例如:用户点击页面上的某个按钮或者鼠标移动到页面的某个图片上而产生一系列的互动的反馈. 我们通过为指定事件绑定 ...
- JavaScript系列----事件机制
1.事件流 1.1.标准事件流 所谓的标准事件流指的的:EMCAScript标准规定事件流包含三个阶段,分别为事件捕获阶段,处于目标阶段,事件冒泡阶段. 下面是一段html代码,根据代码来说明标准事件 ...
- 浅谈JavaScript的事件(事件处理程序)
事件就是用户或者浏览器自身执行的某种动作.诸如click.load和mouseover,都是事件的名字.而响应某个事件的函数就叫事件处理程序.事件处理程序的名字以"on"开头,比如 ...
- jQuery 事件绑定 和 JavaScript 原生事件绑定
总结一下:jQuery 事件绑定 和 JavaScript 原生事件绑定 及 区别 jQuery 事件绑定 jQuery 中提供了四种事件监听绑定方式,分别是 bind.live.delegate.o ...
- JavaScript Dom 事件
JavaScript Dom 事件 对于事件需要注意的要点: // this标签当前正在操作的标签. this // event封装了当前事件的内容. even 常用事件 // 鼠标单击.触发事件 ...
- React—Native开发之原生模块向JavaScript发送事件
首先,由RN中文网关于原生模块(Android)的介绍可以看到,RN前端与原生模块之 间通信,主要有三种方法: (1)使用回调函数Callback,它提供了一个函数来把返回值传回给JavaScript ...
- 第一百六十一节,封装库--JavaScript,完整封装库文件
封装库--JavaScript,完整封装库文件 /** *feng_zhuang_ku_1.0版本,js封装库,2016/12/29日:林贵秀 **/ /** 前台调用 * 每次调用$()创建库对象, ...
随机推荐
- 浅谈attr()和prop()
刚开始学JQ的时候 ,看到attr()和prop()这两个属性的时候感觉很迷茫,而且配合官方给出的推荐使用图: prop()可以做到的attr()完全都可以,而且做不到的attr()也可以做到.何用? ...
- 体验WP 8.1 Update1开发不一定要更新VS2013 Update3
WP 8.1开发者预览版,估计大家也用得很High了,最近,MS推送了Update,主要的东西,不用说,就是最近被说得很火的小娜(Cortana),其实在推Update前几天,还有过一次小更新,当然我 ...
- php的mysql\mysqli\PDO(一)mysql
原文链接:http://www.orlion.ga/1140/ 工作中数据库的操作都被封装好了,这些怎么用的都快忘了干脆写篇博客重新复习下,以后要是再忘记了可以看这篇文章. PHP 5.5.0 起已废 ...
- 深入理解PHP内核(四)概览-PHP脚本的执行
本文链接:http://www.orlion.ml/236/ 下面以php命令行程序为例解释PHP脚本是怎么被执行的.例如如下脚本: <?php $str = 'hello world'; ec ...
- 【.Net底层剖析】3.用IL来理解属性
.Net底层剖析目录章节 1.[深入浅出.Net IL]1.一个For循环引发的IL 2.[.Net底层剖析]2.stfld指令-给对象的字段赋值 3.[.Net底层剖析]3.用IL来理解属性 未完待 ...
- Mina、Netty、Twisted一起学(九):异步IO和回调函数
用过JavaScript或者jQuery的同学都知道,JavaScript特别是jQuery中存在大量的回调函数,例如Ajax.jQuery的动画等. $.get(url, function() { ...
- 自己动手写中文分词解析器完整教程,并对出现的问题进行探讨和解决(附完整c#代码和相关dll文件、txt文件下载)
中文分词插件很多,当然都有各自的优缺点,近日刚接触自然语言处理这方面的,初步体验中文分词. 首先感谢harry.guo楼主提供的学习资源,博文链接http://www.cnblogs.com/harr ...
- Quartz Java resuming a job excecutes it many times--转
原文地址:http://stackoverflow.com/questions/1933676/quartz-java-resuming-a-job-excecutes-it-many-times Q ...
- 发表在 Science 上的一种新聚类算法
今年 6 月份,Alex Rodriguez 和 Alessandro Laio 在 Science 上发表了一篇名为<Clustering by fast search and find of ...
- Azure PowerShell (1) PowerShell整理
<Windows Azure Platform 系列文章目录> 把之前Azure ASM的PowerShell都整理好了. https://github.com/leizhang1984/ ...