`
xiangz
  • 浏览: 1531 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

自制简单JavaScript选择器

 
阅读更多

    JQuery有一个神奇的$符,被称为JQ的选择器,JQ的选择器使用了强大的Sizzle引擎,功能很多,但我们有时不需要如此复杂的功能,只需简单的找一些Id、Class或Tags。

    所以自己随便写了一个简单选择器。

 

 

 

var _G = function(selector, context){
  // _G(""),_G(null),_G(false)
  if(!selector) return "";
  
  //_G(DOMElement)
  if(selector.nodeType){
     	return selector;
  }
  
  if(typeof selector !== 'string') return '';
  
  // "#" , "." ,"*" or other char
  var type = selector.charAt(0);
  
  context = _G(context) || document;
  
  if(type == '*'){

     	return context.getElementsByTagName('*');

  }
  else if(type == '#'){

     	return context.getElementById(selector.slice(1));

  }
  else if(type == '.'){

     	var selector = selector.slice(1), re = context.getElementsByClassName ? context.getElementsByClassName(selector) : [];

     	if(!re[0]){
       		var e = _G('*',context),
           	      l = e.length,
           	      r = new RegExp("(^| )"+selector+"($| )"),
           	      i=0;
       		while(i<l){
           	      r.test(e[i].className) && re.push(e[i]);
           	      i++;
       		}

     			
     	}
     	return re.length>1?re:re[0];
            
  }
  else{
     	return context.getElementsByTagName(selector) || ""; 
  }
  return "";

};

console.log(_G('.demo')[0].innerHTML);
分享到:
评论

相关推荐

    jHelper:一个用于选择器和AJAX的自制JavaScript帮助器-仿照jQuery

    一个用于选择器和AJAX的自制JavaScript帮助器-仿照jQuery 这是一个简单JavaScript库,用于选择DOM元素并发出AJAX请求。 以下是一些可用功能: Ajaxify() -类似于$.ajax() DOM选择器,例如$('a') , $('.container...

    JavaScript网页特效范例宝典源码

    实例013 日期选择器 21 1.3 窗口的动画效果 26 实例014 页面自动滚动 26 实例015 打开窗口特殊效果 27 实例016 动态显示窗口 29 实例017 慢慢放大的窗口 30 实例018 下降式浏览器 32 实例019 旋转的窗口 33 实例020 ...

    javascript自定义滚动条实现代码

    在工作中经常会遇到内容会超出固定的一个范围,超出的内容一般会使用到滚动条来滚动显示。 但是用浏览器默认的滚动条经常被产品经理鄙视,可是用css却改变不了滚动条的样式,还好,有万能的js ^_^~~ ...

    javascript网页特效实例大全(8-12)

    实例251 自制视频播放器 387 第9章 页面特效 391 9.1 页面背景效果 392 实例252 背景固定居中 392 实例253 背景图片纵向重复显示 393 实例254 通过按钮变换背景颜色 395 实例255 背景自动变色 396 ...

    sublime-jshint:JSHint Sublime Text 2中的任何JavaScript文件

    最佳JavaScript语法检查器:最佳文本编辑器的 : 先决条件: 和 Mac OS X:假定使用自制软件或macports安装节点。 使用设置正确的OS X路径。 支持 Linux:确保jshint在您的环境路径中。 Windows:假定使用来自...

    burger:这是一个使用MySQL,Node,Express,Handlebars和自制ORM的汉堡记录器。 使用MVC设计模式将应用程序分为3部分

    目录基本信息一个有趣的应用程序,可在浏览器或移动设备上运行,以创建和吞噬您选择的汉堡。技术领域MySQL Node.js 表示车把习惯ORM MVC设计模式安装此应用程序已部署在。 对于此应用程序,提供了schema.sql和seed....

    Eat-Da-Burger:使用MySQL,Node,Express,Handlebars和自制ORM创建了一个汉堡记录器(好极了!)

    Eat-Da-Burger 描述 在这个项目中,我为饥饿的人创建了一个汉堡记录器。...在您选择的编辑器(VSC,Sublime等)中打开文件夹 用法 遵循MVC设计模式,该项目中使用的语言,软件包和运行时环境包括: MySQL

    Eat-Da-Burger:CRUD应用程序可跟踪汉堡的消费情况

    该应用程序是使用MySQL,Node,Express,Handlebars,JavaScript和自制ORM构建的。 代码库的结构遵循MVC设计模式,通过分解与模型(我们的数据库及其逻辑),视图(用户看到的内容以及与之交互)和控制器(允许我们...

    Eat_Da_Burger:HW Due 62

    该应用程序是使用MySQL,Node,Express,Handlebars,JavaScript和自制ORM构建的。 代码库的结构遵循MVC设计模式,通过分解与模型(我们的数据库及其逻辑),视图(用户看到的内容以及与之交互)和控制器(允许我们...

    aesop-gel:Aēsop.com的UI组件库和设计系统

    还建议将这些插件安装到您选择的IDE /代码编辑器中: 通天塔() 基础棉短绒() 编辑器配置( ) ESLint()(vscode ) Linter UI(仅原子) 漂亮(原子)(vscode ) StyleLint( atom )( vscode ) ...

    mongo-db-installfest:你问什么时间? 它的MondDB时间!

    Mongo使用“面向文档的数据库”结构,包含非常类似于JSON的文档和熟悉的类似于javascript的命令,用于数据库操作。 此installfest改编自Mongo DB的安装说明,可在找到。 Linux 是在Linux上安装的说明。 选择您...

    免费开源思维导图 Freeplane 1.9.1 中文多语免费版.zip

    易于使用内联和对话编辑器,面向对象的主菜单,上下文菜单,多语言支持,拼写检查器,属性面板,拖放功能,热键,批量执行选项,发布,共享和可选择的偏好; 即使没有完全匹配(例如“setup”=“设置”或“flie”=...

    Java开源的下一代社区平台Symphony.zip

    感受到了自造轮子的优缺点,并且可以肯定一点:对于一个想要长久的产品来说,自制技术框架优势远大于劣势 一个好玩的产品或说是细节特性然并卵,需要做的是一个能够持续提供用户价值的产品/特性 虽然直到目前 B3...

    material-components-site-generator:材料组件文档生成器站点

    材料组件文档生成器docsite生成器将转换在material-component仓库中找到的Markdown文件,对其进行样式设置,移动它们,重写要匹配的链接并吐出 。先决条件Ruby不建议使用OS X的系统Ruby,因为它需要写入系统文件夹。...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    23.6 自制表单构建器 403 23.7 处理与模型对象无关的字段 406 23.8 Rails应用的文件上传 409 23.9 布局与组件 411 23.10 再论缓存 417 23.11 新增模板系统 421 第24章 Web 2.0 423 24.1 Prototype 423 24.2 Script....

    burger-tracker:一个应用程序,可以跟踪用户已经吃过但还没有吃过的汉堡

    这是一个使用MySQL,Node,Express,Handlebars和自制ORM的汉堡记录器。 该应用程序的功能包括让用户输入他们想吃的汉堡的名称。 每当用户提交汉堡名称时,应用程序都会在页面左侧显示该汉堡-等待被吞噬。 等候区中...

    Eat-Da-Burger-Dreami

    吃大梦想汉堡我用MySQL,Node,Express,Handlebars和自制的ORM(好吃!)创建了一个汉堡记录器。 Eat-Da-Burger! 是一个餐厅应用,可让用户输入您想吃的汉堡的名称。链接: : 用法每当用户提交汉堡的名称时,该...

    mdl-application:麦肯锡数字实验室应用程序

    Spotify 对于 Spotify 应用程序,我使用了 3 个 API 元数据 API(由 Spotify 折旧) 使用 3rd 方 nodeJS 包装器的 Web API(目前由 Spotify 鼓励) Web API,使用完全自制的请求。 可以在上找到该应用程序的工作版本...

Global site tag (gtag.js) - Google Analytics