js选择器封装
来源:互联网 发布:红线毯 宣城太守知不知 编辑:程序博客网 时间:2024/05/17 23:22
原文链接:http://www.tuicool.com/articles/ieI7fu
function Jr() {}Jr.prototype.getId = function(id) { return document.getElementById(id);}//获取CLASS节点数组Jr.prototype.getClass = function(className, parentNode) { var node = null; //存放父节点 var temps = []; if (parentNode != undefined) { //存在父节点时 node = parentNode; } else { //不存在则默认document node = document; } var all = node.getElementsByTagName('*'); for (var i = 0; i < all.length; i++) { //遍历所有节点,判断是否有包含className if ((new RegExp('(\\s|^)' + className + '(\\s|$)')).test(all[i].className)) { temps.push(all[i]); } } return temps;}//获取元素节点数组Jr.prototype.getTagName = function(tag, parentNode) { var node = null; //存放父节点 var temps = []; if (parentNode != undefined) { node = parentNode; } else { node = document; } var tags = node.getElementsByTagName(tag); for (var i = 0; i < tags.length; i++) { temps.push(tags[i]); } return temps;}//基础库function Jr(args) { //创建一个数组,用来保存获取的节点或节点数组 this.elements = []; //当参数是一个字符串,说明是常规css选择器,不是this,或者function if (typeof args == 'string') { //css模拟,就是跟CSS后代选择器一样 if (args.indexOf(' ') != -1) { //把节点拆分开并保存在数组里 var elements = args.split(' '); //存放临时节点对象的数组,解决被覆盖问题 var childElements = []; var node = []; //用来存放父节点用的 for (var i = 0; i < elements.length; i++) { //如果默认没有父节点,就指定document if (node.length == 0) node.push(document); switch (elements[i].charAt(0)) { //id case '#': //先清空临时节点数组 childElements = []; childElements.push(this.getId(elements[i].substring(1))); node = childElements; //保存到父节点 break; //类 case '.': childElements = []; //遍历父节点数组,匹配符合className的所有节点 for (var j = 0; j < node.length; j++) { var temps = this.getClass(elements[i].substring(1), node[j]); for (var k = 0; k < temps.length; k++) { childElements.push(temps[k]); } } node = childElements; break; //标签 default: childElements = []; for (var j = 0; j < node.length; j++) { var temps = this.getTagName(elements[i], node[j]); for (var k = 0; k < temps.length; k++) { childElements.push(temps[k]); } } node = childElements; } } this.elements = childElements; } else { //find模拟,就是说只是单一的选择器 switch (args.charAt(0)) { case '#': this.elements.push(this.getId(args.substring(1))); break; case '.': this.elements = this.getClass(args.substring(1)); break; default: this.elements = this.getTagName(args); } } } else if (typeof args == 'Object') { if (args != undefined) { this.elements[0] = args; } } else if (typeof args == 'function') { //这里不讲 this.ready(args); }}var MN = function(args) { return new Jr(args);}
0 0
- js选择器封装
- js选择器的封装
- JS封装简单后代选择器
- js笔记:Js封装库——css选择器
- 封装$选择器
- js框架封装(二)——选择器框架
- js选择器
- js选择器
- js 选择器
- js选择器
- JS选择器
- js选择器
- 时间选择器的封装
- 封装UIDatePicker,日期选择器
- 时间选择器封装
- OC封装时间选择器
- js封装id与class选择器代码,兼容ie低版本
- jQuery选择器和JS选择器
- Android中Activity、Service和线程之间的通信
- STL算法总结之查找算法示例
- POJ 2096 Collecting Bugs
- sql操作语句,怎么新建变量。这样就不用每次修改都修改很长的表了
- 为什么应该使用MyFragment.newInstance()创建新的Frgament,而不是new MyFragment()
- js选择器封装
- Android-SDK-For-Linux常用命令
- linux使用小记
- MAC ZOC远程访问Linux
- es部署在docker里面,让es固定在一台slave上跑
- php基础知识收集--数组、文件、字符串、文件、会话
- Python学习(一 基础知识要点)
- Unity3D之VR开发笔记@大朋VR开发UNITY环境搭建
- Java 容器类内部使用的数据结构