js实现类似jquery基础功能 简单选择器/事件/属性
为什么80%的码农都做不了架构师?>>>
按钮样式定义
<style>.btn{display: inline-block;width: 100px;height: 20px;color: #fff;font-size: 12px;background-color: #0033dd;text-align: center;line-height: 20px;text-decoration: none;border: 5px #0000ff outset;}.btn-big-test{width: 300px;height: 85px;line-height: 85px;font-size: 25px;}</style>
用基础js 实现了一个简单的具有元素选择支按id/name/class /tag/对象等方式的基础选择器,并实现了事件委托和移除机制,实现了属性操作功能和连续调用模式.异常捕捉
声明按钮
<a href="javascript:;" class="btn-big-test btn" title='你点了一个巨大的按钮!'>巨大的测试按钮</a>
<br/><br/>
<a href="javascript:;" id="removetest" class="btn grey">移除test事件</a>
<a href="javascript:;" id="addtest" class="btn">开启test事件</a>
/*声明函数*/$_fn=function(selectName){this.selectName=selectName;this.obj=this.selectElement();return this;}//原型方法$_fn.prototype={//基础选择器 不包含子类 连续等模式选择器'selectElement':function(){if(typeof this.selectName == 'object'){return this.selectName;}else if(this.selectName.indexOf("#")!=-1){return document.getElementById(this.selectName.replace('#',''));}else if(this.selectName.indexOf(".")!=-1){return document.getElementsByClassName(this.selectName.replace('.',''));}else if(this.selectName.indexOf("@")!=-1){return document.getElementsByName(this.selectName.replace('@',''));}else{return document.getElementsByTagName(this.selectName);}},'on':function(event,callback){try{$_eventStack[this.obj]=callback;if (/.*(Firefox|Safari|Chrome).*/.exec(window.navigator.userAgent)) {if(this.obj.length>0){for (var i=0;i<this.obj.length;i++) {this.obj[i].addEventListener("click",callback,false);};}else{this.obj.addEventListener("click",callback,false);}}else{if(this.obj.length>0){for (var i=0;i<this.obj.length;i++) {if(this.obj[i])this.obj[i].attachEvent=("onclick",callback); }}else{this.obj.attachEvent=("onclick",callback);}}}catch(e){console.error(e);}return this;},detach:function(event){try{if (/.*(Firefox|Safari|Chrome).*/.exec(window.navigator.userAgent)) {if(this.obj.length>0){for (var i=0;i<this.obj.length;i++) {this.obj[i].removeEventListener(event,$_eventStack[this.obj],false);};}else{this.obj.removeEventListener(event,$_eventStack[this.obj],false);}}else{if(this.obj.length>0){for (var i=0;i<this.obj.length;i++) {if(this.obj[i])this.obj[i].detachEvent("on"+event,$_eventStack[this.obj]); }}else{this.obj.detachEvent("on"+event,$_eventStack[this.obj]);}}}catch(e){console.error(e);}return this;},attr:function(propName,value){if(!value){return this.obj.getAttribute(propName);}else{this.obj.setAttribute(value);return this;}}}window.$_ = function(selectName){return new $_fn(selectName);};//获取智能对象window.$_eventStack={};//记录事件委托关系
///
设置按钮事件
$_(".btn-big-test").on('click',function(e){alert($_(this).attr("title"));});
$_("#removetest").on("click",function(){$_(".btn-big-test").detach('click');alert("事件已移除");});
$_("#addtest").on("click",function(){//采用连续调用模式销毁事件和委托新的事件 避免多次调用$_(".btn-big-test").detach('click').on('click',function(e){alert(this.className);});alert("事件已添加");});
转载于:https://my.oschina.net/youa/blog/372776
js实现类似jquery基础功能 简单选择器/事件/属性相关推荐
- (转)jquery基础教程七 选择器(selectors 的xpath语法应用)
我们根据实例来解释jquery选择器(selectors)中xpath几种常用的用法 比如下面html代码 <ul> <li class="aaaa" title ...
- 第三章:JQuery基础---核心函数选择器、工具方法
一:是什么?以及作用 定义:有特定语法规则(css选择器)的字符串 作用:用来查找某个/些DOM元素: $(selector) 二:基本选择器(最基本最常用的选择器) id选择器:#id ...
- jQuery基础:下(事件及动画效果)
//.click()绑定单击事件,回调函数中的参数是当前的jQuery事件$('.i1').click(function(e) {alert('w shi ni baba!');console.log ...
- Jquery选择器之可见性选择器、属性过滤选择器
可见性过滤选择器是根据元素的可见和不可见状态来选择相应的元素,可见性选择器介绍如下 在可见性选择器中,需要注意选择器:hidden,他不仅包括样式属性display为"none", ...
- 《SAP CRM管理与实施指南》一一2.2 SAP CRM基础功能
本节书摘来自华章计算机<SAP CRM管理与实施指南>一书中的第2章,第2.2节,作者:邹荫文 著,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.2 SA ...
- java与jquery的选择器区别_java day44【JQuery 基础:概念,快速入门,JQuery对象和JS对象区别与转换,选择器,DOM操作,案例】...
第一章JQuery 基础 1. 概念: 一个JavaScript框架.简化JS开发 * jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScrip ...
- java day44【JQuery 基础:概念,快速入门,JQuery对象和JS对象区别与转换,选择器,DOM操作,案例】...
第一章 JQuery 基础 1. 概念: 一个JavaScript框架.简化JS开发 * jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScr ...
- day43 JavaWen阶段——JQuery 基础(JQuery相关开发文档,JQuery对象和JS对象区别与转换,JQuery选择器,JQuery中DOM操作,案列【QQ表情选择】【左右移动】)
今日内容 1. JQuery 基础: 概念 快速入门 JQuery对象和JS对象区别与转换 选择器 DOM操作 案例 今日源码: 链接:https://pan.baidu.com/s/1KiG0c_V ...
- js进阶 10-4 jquery中基础选择器有哪些
js进阶 10-4 jquery中基础选择器有哪些 一.总结 一句话总结: 1.群组选择器用的符号是什么? 群组选择器,中间是逗号 2.jquery中基础选择器有哪些? 5种,类,id,tag,群组, ...
- jQuery基础:选择器、动画、DOM操作和事件等
本文笔记基于「千古壹号」的GitHub项目:https://github.com/qianguyihao/web 文章目录 *1.选择器 1.1 DOM和jQuery比较 1.2 隔行变色 1.3 层 ...
最新文章
- 2022-2028年中国搪胶行业市场深度分析及投资前景分析报告
- visio2007 画流程图杂记
- ExtJS实现完美Grid(2)--分组统计
- linux网络相关配置
- office online server收费吗_上海公司注册价格有乱收费吗?
- python求列表最大值下标_切片,丝滑的字符串 | Python基础连载(三)
- 如何定制Activity的标题栏
- shell softech 面料_求高人指点 猛犸象的SOFTECH面料和GTX PROSHELL面料哪个好
- centos6.8 环境一键安装包 nginx配置thinkphp5
- python系统提供构造函数传入参数_python类变量与构造函数的使用
- CVPR2021 Oral | HOTR:不再需要后处理!Kakao Brain提出端到端Human-Object交互检测模型...
- 呆萌的图模型学习——图基本信息 Networkx基本操作(二)
- 重构——62提炼子类(Extract Subclass)
- Matlab鲁棒控制工具箱(Robust Control Toolbox)
- 第九届蓝桥杯题解(部分)
- 乐吾乐le5le-Topology为智慧水务可视化赋能(一)
- 树模型知识点(1)——决策树
- 人工智能“六步走”学习路线
- Ubuntu 22.04 视频播放器
- c android显示gif动画,MFC显示GIF动画图片
热门文章
- python主线程执行_python主线程与子线程的结束顺序实例解析
- 平板竖屏_朱海舟吐槽iPad办公体验:大量竖屏应用缺乏适配
- ubuntu 串口调试工具_开源软件分享基于WPF的串口调试工具
- 数据分析的升级版本--excel数据对比--整体思路
- python3虚拟环境的设置
- mobx中跟新了数据视图没变化_如何做一个好的大数据平台架构
- python个人所得税怎么写_Python实现的个人所得税计算器示例
- 前后端分离导出excel_Vue + .NetCore前后端分离的快速发开框架
- 【Code Review】赛后专访
- 详解云原生应用实践与未来趋势