1.选取元素

  1. // jQuery
  2. var els = $('.el');
  3.  
  4. // Native
  5. var els = document.querySelectorAll('.el');
  6.  
  7. // Shorthand
  8. var $ = function (el) {
  9. return document.querySelectorAll(el);
  10. }

querySelectorAll方法返回的是NodeList对象,需要转换为数组。

  1. myList = Array.prototype.slice.call(myNodeList)

2.创建元素

  1. // jQuery
  2. var newEl = $('<div/>');
  3.  
  4. // Native
  5. var newEl = document.createElement('div');

3.添加事件

  1. // jQuery
  2. $('.el').on('event', function() {
  3.  
  4. });
  5.  
  6. // Native
  7. [].forEach.call(document.querySelectorAll('.el'), function (el) {
  8. el.addEventListener('event', function() {
  9.  
  10. }, false);
  11. });

4.get/set属性

  1. // jQuery
  2. $('.el').filter(':first').attr('key', 'value');
  3. $('.el').filter(':first').attr('key');
  4.  
  5. // Native
  6. document.querySelector('.el').setAttribute('key', 'value');
  7. document.querySelector('.el').getAttribute('key');

5.添加和移除样式Class

DOM元素本身有一个可读写的className属性,可以用来操作class。

HTML 5还提供一个classList对象,功能更强大(IE 9不支持)。

  1. // jQuery
  2. $('.el').addClass('class');
  3. $('.el').removeClass('class');
  4. $('.el').toggleClass('class');
  5.  
  6. // Native
  7. document.querySelector('.el').classList.add('class');
  8. document.querySelector('.el').classList.remove('class');
  9. document.querySelector('.el').classList.toggle('class');

6.追加元素

尾部追加元素:

  1. // jQuery
  2. $('.el').append($('<div/>'));
  3.  
  4. // Native
  5. document.querySelector('.el').appendChild(document.createElement('div'));

头部追加元素:

  1. //jQuery
  2. $(‘.el’).prepend('<div></div>')
  3.  
  4. //Native
  5. var parent = document.querySelector('.el');
  6. parent.insertBefore("<div></div>",parent.childNodes[0])

7.克隆元素

  1. // jQuery
  2. var clonedEl = $('.el').clone();
  3.  
  4. // Native
  5. var clonedEl = document.querySelector('.el').cloneNode(true);

8.移除元素

  1. Remove
  2. // jQuery
  3. $('.el').remove();
  4.  
  5. // Native
  6. remove('.el');
  7.  
  8. function remove(el) {
  9. var toRemove = document.querySelector(el);
  10.  
  11. toRemove.parentNode.removeChild(toRemove);
  12. }

9.获取父级元素

  1. // jQuery
  2. $('.el').parent();
  3.  
  4. // Native
  5. document.querySelector('.el').parentNode;

10.获取上一个/下一个元素(Prev/next element)

  1. // jQuery
  2. $('.el').prev();
  3. $('.el').next();
  4.  
  5. // Native
  6. document.querySelector('.el').previousElementSibling;
  7. document.querySelector('.el').nextElementSibling;

11.XHR and AJAX

  1. // jQuery
  2. $.get('url', function (data) {
  3.  
  4. });
  5. $.post('url', {data: data}, function (data) {
  6.  
  7. });
  8.  
  9. // Native
  10.  
  11. // get
  12. var xhr = new XMLHttpRequest();
  13.  
  14. xhr.open('GET', url);
  15. xhr.onreadystatechange = function (data) {
  16.  
  17. }
  18. xhr.send();
  19.  
  20. // post
  21. var xhr = new XMLHttpRequest()
  22.  
  23. xhr.open('POST', url);
  24. xhr.onreadystatechange = function (data) {
  25.  
  26. }
  27. xhr.send({data: data});

12.清空子元素

  1. //jQuery
  2. $("#elementID").empty()
  3.  
  4. //Native
  5. var element = document.getElementById("elementID")
  6. while(element.firstChild) element.removeChild(element.firstChild);

13.检查是否有子元素

  1. //jQuery
  2. if (!$("#elementID").is(":empty")){}
  3.  
  4. //Native
  5. if (document.getElementById("elementID").hasChildNodes()){}

14.$(document).ready

DOM加载完成,会触发DOMContentLoaded事件,等同于jQuery的$(document).ready方法。

  1. document.addEventListener("DOMContentLoaded", function() {
  2. // ...
  3. });

15.数据储存

jQuery对象可以储存数据。

  1. $("body").data("foo", 52);

HTML 5有一个dataset对象,也有类似的功能(IE 10不支持),不过只能保存字符串。

  1. element.dataset.user = JSON.stringify(user);
  2. element.dataset.score = score;

16.动画

jQuery的animate方法,用于生成动画效果。

  1. $foo.animate('slow', { x: '+=10px' }

jQuery的动画效果,很大部分基于DOM。但是目前,CSS 3的动画远比DOM强大,所以可以把动画效果写进CSS,然后通过操作DOM元素的class,来展示动画。

  1. foo.classList.add('animate')

如果需要对动画使用回调函数,CSS 3也定义了相应的事件。

  1. el.addEventListener("webkitTransitionEnd", transitionEnded);
  2. el.addEventListener("transitionend", transitionEnded);

原生JS取代一些JQuery方法的更多相关文章

  1. 原生JS取代一些JQuery方法的简单实现

    原生JS取代一些JQuery方法的简单实现 下面小编就为大家带来一篇原生JS取代一些JQuery方法的简单实现.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧   1.选 ...

  2. 原生js获取鼠标坐标方法全面讲解-zmq

    原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y 一.关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:eve ...

  3. 原生js格式化json的方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 类似jQuery的原生JS封装的ajax方法

    一,前言: 前文,我们介绍了ajax的原理和核心内容,主要讲的是ajax从前端到后端的数据传递的整个过程. Ajax工作原理和原生JS的ajax封装 真正的核心就是这段代码: var xhr = ne ...

  5. 原生js事件和jquery事件的执行顺序问题

    场景:近日,写前端页面时候,在针对输入框input操作时,用到了jquery的插件,插件中使用了jquery的focus()和blur()方法.但是同时,又需要在插件之外再针对输入框的获取焦点和失去焦 ...

  6. 原生js ajax与jquery ajax的区别

    原生js ajax的调用: ajax({ type : "get", url : "02_ajax_get.txt", data : { "userN ...

  7. 轮播图原生js实现和jquery实现和js面向对象方式实现

    原生JS实现 html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  8. 原生js操作dom的方法

    今天学习了原生js的dom节点的操作,就记录下来,仅供自己以后参考. 1)创建节点:除了可以使用createElement创建元素,也可以使用createTextNode创建文本节点. documen ...

  9. 原生JS版和jQuery 版实现文件上传功能

    <!doctype html> <html lang="zh"> <head> <meta charset="utf-8&quo ...

随机推荐

  1. pyhton3多线程

    from time import ctime,sleep def music(): for i in range(2): print ("I was listening to music. ...

  2. Android OTA 升级之三:生成recovery.img

    Android OTA 升级之三:生成recovery.img 作者: 宋立新 Email:zjujoe@yahoo.com 前言 得到了ota升级包后,我们就可以用它来升级系统了.Android 手 ...

  3. minimum-moves-to-equal-array-elements

    https://leetcode.com/problems/minimum-moves-to-equal-array-elements/ package com.company; import jav ...

  4. Windows 下搭建LDAP服务器

    五一闲来没事,加上项目正在进行UAT.抽空研究了一下LDAP相关知识.随手做一个记录. 为了方便阅读还是先介绍一下什么是LDAP? 前言.Lightweight Directory Access Pr ...

  5. core--主线程

    windows的线程是windows可以分配给cpu的最小单元,对window应用程序的管理,最小的管理单位就是线程.那什么是线程?线程其实什么都不是,只是一个概念,没有实体,又看不见.这个概念的定义 ...

  6. Qt Assistant介绍

    简介 Qt Assistant也就是我们常说的Qt助手,是一款用于呈现在线文档的工具. 简介 一分钟学会使用 Qt参考文档 Qt Assistant详解 命令行选项 工具窗口 文档窗口 工具栏 菜单 ...

  7. 采用RPC方式和document方式 开发Axis2的WebService客户端

    import javax.xml.namespace.QName; import org.apache.axiom.om.OMAbstractFactory; import org.apache.ax ...

  8. 了解Objective-C中NSAutoreleasePool使用方法

    本文的目的是来了解Objective-C中NSAutoreleasePool使用方法,Objective-C的Foundation库实际上是种运行级对象系统,与一般的对象语言,例如C++,Java不一 ...

  9. (转载)DataTable使用技巧总结

    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结.         一.Da ...

  10. Perfect smooth scrolling in UITableViews

    https://medium.com/ios-os-x-development/perfect-smooth-scrolling-in-uitableviews-fd609d5275a5 Diffic ...