模拟Jquery选择器
目前实现的功能有以下几点:
1.$("#adom"); // 返回id为adom的DOM对象
2.$("a"); // 返回一个a标签的数组
3.$(".classa"); // 返回一个class的数组
4.$("[data-log]"); // 返回一个包含属性data-log的数组
5.$("[data-time=2015]"); // 返回一个属性为data-time且值为2015的数组
其他选择器有时间在弄吧。
function $() {
var a = arguments,len,str,sub,dataReg;
// class兼容IE
function classN(n){
var tag = document.getElementsByTagName("*");
for(var i=0,arr=[];i<tag.length;i++){
if(tag[i].className.indexOf(n)!==-1){
arr.push(tag[i]);
}
}
return arr;
}
// 自定义data选择器
function data(d){
var tag = document.getElementsByTagName("*");
var reg = /\-([\d\w]+)\]/;
for(var i=0,arr=[];i<tag.length;i++){
if(tag[i].dataset[reg.exec(d)[1]]){
arr.push(tag[i]);
}
}
return arr;
}
// 自定义data选择器严格版
function dataT(d){
var tag = document.getElementsByTagName("*");
var reg = /\[data\-([\w\d]+)\=([\w\d]+)/;
for(var i=0,arr=[];i<tag.length;i++){
if(tag[i].dataset[reg.exec(d)[1]]===reg.exec(d)[2]){
arr.push(tag[i]);
}
}
return arr;
}
// 如果是函数,将函数添加到load事件中
if((typeof a[0])==="function"){
window.addEventListener('load',a[0]);
}else{
len = a.length;
str = a[0].charAt(0);
sub = a[0].substring(1);
dataReg = /\=/.test(a[0]);
switch(str){
case "#":
return document.getElementById(sub);
break;
case ".":
return classN(sub);
break;
case "[":
switch(dataReg){
case false:
return data(a[0]);
break;
case true:
return dataT(a[0]);
break;
}
break;
default:
return document.getElementsByTagName(a[0]);
break;
}
}
}
模拟Jquery选择器的更多相关文章
- 使用原生js模拟jQuery选择器,实现new方法,兼容ie5
// 考虑到兼容ie5,未使用es6语法 /* 使用方法: 在<head>标签中(需使用ready方法): <script src="./jQuery2.js"& ...
- 模拟jquery封装选择器
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- js框架封装,模拟jQuery封装
模拟jQuery框架,利用原生的js技术,封装一个js框架,以加深对jQuery的常用api的使用和面向对象原理的理解:一:结构部分首先利用闭包,构造一个自执行函数,然后利用选择器函数Sizzle,获 ...
- [转]jQuery 选择器和dom操作
居然是12年的总结.... 文章地址: http://www.cnblogs.com/happyPawpaw/articles/2595092.html JQuery选择器 1.基本选择器 基本选择器 ...
- 原生JS模拟jQuery $
模拟jQuery的$选择器 在获取元素的时候使用ID选择器,返回的是一个对象:使用类选择器或者标签选择器返回可能是一组元素:将获取到的一个或一组元素进行一个简易的封装封装成一个TQObject 什么是 ...
- JQuery 选择器
选择器是JQuery的根基,在JQuery中,对事件的处理,遍历DOM和AJAX操作都依赖于选择器.如果能够熟练地使用选择器,不仅能简化代码,而且还可以事半功倍. JQuery选择器的优势 1.简洁的 ...
- jQuery的案例及必知重要的jQuery选择器
Jquery能做什么 访问和操作DOM元素 控制页面样式 对页面事件进行处理 扩展新的jQuery插件 与Ajax技术完美结合 Jquery的优势 体积小,压缩后只有100KB左右 l强大的选择器 出 ...
- 深入学习jQuery选择器系列第一篇——基础选择器和层级选择器
× 目录 [1]id选择器 [2]元素选择器 [3]类选择器[4]通配选择器[5]群组选择器[6]后代选择器[7]兄弟选择器 前面的话 选择器是jQuery的根基,在jQuery中,对事件处理.遍历D ...
随机推荐
- Leetcode 107 Binary Tree Level Order Traversal II 二叉树+BFS
题意是倒过来层次遍历二叉树 下面我介绍下BFS的基本框架,所有的BFS都是这样写的 struct Nodetype { int d;//层数即遍历深度 KeyType m;//相应的节点值 } que ...
- Android兼容包multidex的开发和构建方法
在Android开发中,函数方法超过65k限制后,我们就常常会用到multidex分包解决,但是multidex的配置,对系统apk的构建.签名.打包复杂性大大的增加,严重的降低了构建效率.那这个问题 ...
- [原创]IBM BLM模型思维导图
[原创]IBM BLM模型思维导图 IBM业务领先模型 http://wenku.baidu.com/view/1d1d247af242336c1eb95e3b.html?from=search
- C# 标签(条码)的打印与设计(一)
C# 标签(条码)的打印与设计(一) C# 标签(条码)的打印与设计(二) 总结:自定义设计条码器.
- 充分利用 UE4 中的噪声
转自:https://www.unrealengine.com/zh-CN/blog/getting-the-most-out-of-noise-in-ue4 UE4 推出基于材质的程序式噪声已经有一 ...
- GO語言基礎教程:序章
首先自我介紹一下我自己,我是一個coder,目前主要從事B/S程序開發工作,懂點PHP;ASP;JSP;JS;VB;C;DELPHI;JAVA,另外知道幾個數據庫,除此之外別無所長,那麼我為何會選擇學 ...
- LDAP查询过滤语法(MS)
http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters ...
- Java 7 jps - JVM Process Status Tool
本文内容 语法 参数 描述 选项 主机标识符 输出格式 示例 参考资料 先发出来,然后慢慢翻译~ 语法 jps [ options ] [ hostid ] 参数 options 命令行参数. hos ...
- Linux--Ubuntu12.04安装NDK
前言 本篇博客将介绍如何在Ubuntu12.04下安装Android NDK,在其他版本的Ubuntu下,方法也类似.由于Android NDK不能单独作为Android应用程序来运行,因此,使用An ...
- WPF Window 服务安装
一.安装服务 1.已管理员的身份启动CMD 2.输入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 回车 3.输入 InstallUtil.exe ...