转载自:[http://www.cnblogs.com/coco1s/p/4484238.html]

选择器

便捷的找到我们想要的DOM元素是JQuery的核心功能,JQuery选择器的强大无需赘言。通过传递一个查询字符串给CSS选择器,它将会在DOM元素中检索所有的匹配。

然而在大多数的情况下,我们可以使用相同的代码量用原生JS轻易实现。

1.获取页面所有的div

/* jQuery */$("div")/* native equivalent */
document.getElementsByTagName("div") 

2.获取某类名相同的一群元素

  /* jQuery */ $(".my-class")/* native equivalent */document.querySelectorAll(".my-class")/* FASTER native equivalent */document.getElementsByClassName("my-class") 

3.更复杂的一些选择器

  /* jQuery */$(".my-class li:first-child")/* native equivalent */document.querySelectorAll(".my-class li:first-child") /* jQuery */$(".my-class").get(0)/* native equivalent */document.querySelector(".my-class")

DOM操作

JQuery另一大频繁被使用到的功能就是操作DOM元素,诸如插入或删除一个元素。当然,如果使用原生JS实现这些功能,代码量肯定是会有所增加的,不过我们也可以将这些功能封装成函数,下面是一些常用的DOM操作的原生JS实现。

1.插入HTML元素

  /* jQuery */$(document.body).append("<div id='myDiv'><img src='im.gif'/></div>");/* CRAPPY native equivalent */document.body.innerHTML += "<div id='myDiv'><img src='im.gif'/></div>";/* MUCH BETTER native equivalent */var frag = document.createDocumentFragment();var myDiv = document.createElement("div");myDiv.id = "myDiv";var im = document.createElement("img");im.src = "im.gif";myDiv.appendChild(im);frag.appendChild(myDiv);document.body.appendChild(frag);

CSS操作

在JQuery中可以轻松实现对css的操作,增加属性、删除属性或是检测是否存在某个类。那么你是否觉得使用原生JS实现会很麻烦呢?其实不然,因为有classList。下面是一些关于JQuery css操作的JS原生实现。

  // get reference to DOM elementvar el = document.querySelector(".main-content");//----Adding a class------/* jQuery */$(el).addClass("someClass");/* native equivalent */el.classList.add("someClass");//----Removing a class-----/* jQuery */$(el).removeClass("someClass");/* native equivalent */el.classList.remove("someClass");//----Does it have class---/* jQuery */if($(el).hasClass("someClass"))/* native equivalent */if(el.classList.contains("someClass"))

当我们简单地逐个设置Css的属性,而并非将它们全部传递给JQuery的Css函数时,性能明显会快很多。而且,真的不会添加什么额外的代码。

  // get reference to a DOM elementvar el = document.querySelector(".main-content");//----Setting multiple CSS properties----/* jQuery */$(el).css({background: "#FF0000","box-shadow": "1px 1px 5px 5px red",width: "100px",height: "100px",display: "block"});/* native equivalent */el.style.background = "#FF0000";el.style.width = "100px";el.style.height = "100px";el.style.display = "block";el.style.boxShadow = "1px 1px 5px 5px red";

show与hide

show()与hide()应该也是JQuery中十分常用的方法,原生JS实现同样轻松。

  // get reference to a DOM elementvar el = document.querySelector(".main-content");//----show() or hide()----/* jQuery */$(el).show();$(el).hide();/* native equivalent */el.style.display = '';el.style.display = 'none';

事件绑定

  // get reference to a DOM elementvar el = document.querySelector(".main-content");//----Event Listener off----/* jQuery */$(el).off(eventName, eventHandler);/* native equivalent */el.removeEventListener(eventName, eventHandler);//----Event Listener  on----/* jQuery */$(el).on(eventName, eventHandler);/* native equivalent */el.addEventListener(eventName, eventHandler);

【前端性能】必须要掌握的原生JS实现JQuery相关推荐

  1. 原生js、jQuery实现选项卡功能

    在大家在网上平常浏览网页的时候,想必各位都会看到选项卡功能,在这里给大家详解一下用原生js.jQuery如何来写一些基本的选项卡 话不多说,先给各位看一下功能图:              好了,下边 ...

  2. 原生js与jQuery显示隐藏div的几种方法

    原生Js与jQuery显示隐藏div的几种方法 简介:本文将会讲解,如何使用原生的JS和jquery来实现对于这个div盒子的隐藏 js 方式一 首先是进行js演示和讲解. 首先是display的方法 ...

  3. span的取值与赋值(原生js与jquery) - 对比篇

    文章目录 关于span的取值与赋值 - 原生js与jquery代码 一. span的`取值`: 1. `javascript` 2. `jquery` 二. span的`赋值`: 1. `javasc ...

  4. 原生js和jquery常用的DOM操作

    前言 将原生JS和jquery里面的DOM操作进行了一下整理,方便以后温习. 创建元素节点 1.原生: document.createElement("div") 2.jquery ...

  5. html——原生js与jquery创建元素节点区别

    学习完静态样式之后开始学习动态创建添加html元素,总结了下原生js与jquery生成元素区别. 1.javascript创建元素 创建select var select = document.cre ...

  6. 原生js与jquery的区别

    原生js与jquery的区别 1.选择器: js: $('.car_img_con img')[0]; var jsObj = document.getElementsByClassName('sel ...

  7. jq ajax请求php原声,原生JS与jQuery对AJAX的实现

    原生JS与jQuery对AJAX的实现 一.定义 W3C里这么解释AJAX: AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). ...

  8. 原生js和jquery 遍历数组区别(forEach和each区别)

    原生js和jquery 遍历数组区别(forEach和each区别) <script>var arr=[1,3,6,8,4];var obj={0:1,1:3,2:6,3:8,4:4};a ...

  9. html 对勾单选框,利用原生js和jQuery实现单选框的勾选和取消操作的方法

    根据以下的Demo,大概就可以看的明白 Demo: window.onload = function(){ var dom_a = document.getElementById('a1'); var ...

  10. 前端那些事之原生js实现jquery常用方法

    2019独角兽企业重金招聘Python工程师标准>>> 原生js封装,实现jquery中常用 方法 //定义一个对象 - 名字是$ var $$ = function() {this ...

最新文章

  1. 打印给定字符串中字符的所有排列
  2. python拼音怎么写-Python 获取中文字拼音首个字母的方法
  3. linux安装autossh详细教程,在Linux下安装autossh的教程
  4. FusionCharts使用问题及解决方法(三)-FusionCharts常见问题大全
  5. Python3 爬虫学习笔记 C06 【正则表达式】
  6. 结构设计模式 - Bridge设计模式
  7. 转:PHP - .htaccess设置显示PHP错误
  8. 程序员揭秘 一些鲜为人知的编程真相
  9. linux系统下将php和mysql命令加入到环境变量中的方法
  10. 经典成功创业-36法则
  11. 5面阿里,终获offer(Java后端)
  12. 校园闲置物品(跳蚤市场)交易平台的设计与实现
  13. erp系统的服务器如何配置,erp系统云服务器怎么配置
  14. 机器学习算法——神经网络5(ART 1网络)
  15. linux命令--使用fsck修复文件系统
  16. [软件需求]软件需求规格说明书样例
  17. [Windows系统]“ppt无法打开演示文稿,防病毒程序可能阻止您打开此演示文稿?”这种情况不要慌
  18. 可靠性分析类毕业论文文献都有哪些?
  19. 淘宝天猫API seller_info-获得淘宝店铺详情
  20. NLP之相似语句识别

热门文章

  1. 如何使用iMazing备份、恢复《暴力飞车》游戏存档
  2. BGP线路机柜值得你考虑的几点因素-新乡BGP机柜
  3. Fiddler拦截并修改移动端请求
  4. 调用百度地图 API 移动地图时 maker 始终在地图中间 并根据maker 经纬度 返回地址...
  5. UISearchController使用方法及注意事项
  6. mysql二进制安装shell脚本,一分钟就搞好linux上的mysql
  7. 学习Bloom Filter,处理“海量”数据
  8. 解决NVIDIA显卡驱动“没有找到兼容的图形硬件”的问题 [转]
  9. Google 产品速查手册大全
  10. javascript:访问iframe中的js函数