原生JS取代一些JQuery方法
1.选取元素
- // jQuery
- var els = $('.el');
- // Native
- var els = document.querySelectorAll('.el');
- // Shorthand
- var $ = function (el) {
- return document.querySelectorAll(el);
- }
querySelectorAll方法返回的是NodeList对象,需要转换为数组。
- myList = Array.prototype.slice.call(myNodeList)
2.创建元素
- // jQuery
- var newEl = $('<div/>');
- // Native
- var newEl = document.createElement('div');
3.添加事件
- // jQuery
- $('.el').on('event', function() {
- });
- // Native
- [].forEach.call(document.querySelectorAll('.el'), function (el) {
- el.addEventListener('event', function() {
- }, false);
- });
4.get/set属性
- // jQuery
- $('.el').filter(':first').attr('key', 'value');
- $('.el').filter(':first').attr('key');
- // Native
- document.querySelector('.el').setAttribute('key', 'value');
- document.querySelector('.el').getAttribute('key');
5.添加和移除样式Class
DOM元素本身有一个可读写的className属性,可以用来操作class。
HTML 5还提供一个classList对象,功能更强大(IE 9不支持)。
- // jQuery
- $('.el').addClass('class');
- $('.el').removeClass('class');
- $('.el').toggleClass('class');
- // Native
- document.querySelector('.el').classList.add('class');
- document.querySelector('.el').classList.remove('class');
- document.querySelector('.el').classList.toggle('class');
6.追加元素
尾部追加元素:
- // jQuery
- $('.el').append($('<div/>'));
- // Native
- document.querySelector('.el').appendChild(document.createElement('div'));
头部追加元素:
- //jQuery
- $(‘.el’).prepend('<div></div>')
- //Native
- var parent = document.querySelector('.el');
- parent.insertBefore("<div></div>",parent.childNodes[0])
7.克隆元素
- // jQuery
- var clonedEl = $('.el').clone();
- // Native
- var clonedEl = document.querySelector('.el').cloneNode(true);
8.移除元素
- Remove
- // jQuery
- $('.el').remove();
- // Native
- remove('.el');
- function remove(el) {
- var toRemove = document.querySelector(el);
- toRemove.parentNode.removeChild(toRemove);
- }
9.获取父级元素
- // jQuery
- $('.el').parent();
- // Native
- document.querySelector('.el').parentNode;
10.获取上一个/下一个元素(Prev/next element)
- // jQuery
- $('.el').prev();
- $('.el').next();
- // Native
- document.querySelector('.el').previousElementSibling;
- document.querySelector('.el').nextElementSibling;
11.XHR and AJAX
- // jQuery
- $.get('url', function (data) {
- });
- $.post('url', {data: data}, function (data) {
- });
- // Native
- // get
- var xhr = new XMLHttpRequest();
- xhr.open('GET', url);
- xhr.onreadystatechange = function (data) {
- }
- xhr.send();
- // post
- var xhr = new XMLHttpRequest()
- xhr.open('POST', url);
- xhr.onreadystatechange = function (data) {
- }
- xhr.send({data: data});
12.清空子元素
- //jQuery
- $("#elementID").empty()
- //Native
- var element = document.getElementById("elementID")
- while(element.firstChild) element.removeChild(element.firstChild);
13.检查是否有子元素
- //jQuery
- if (!$("#elementID").is(":empty")){}
- //Native
- if (document.getElementById("elementID").hasChildNodes()){}
14.$(document).ready
DOM加载完成,会触发DOMContentLoaded事件,等同于jQuery的$(document).ready方法。
- document.addEventListener("DOMContentLoaded", function() {
- // ...
- });
15.数据储存
jQuery对象可以储存数据。
- $("body").data("foo", 52);
HTML 5有一个dataset对象,也有类似的功能(IE 10不支持),不过只能保存字符串。
- element.dataset.user = JSON.stringify(user);
- element.dataset.score = score;
16.动画
jQuery的animate方法,用于生成动画效果。
- $foo.animate('slow', { x: '+=10px' }
jQuery的动画效果,很大部分基于DOM。但是目前,CSS 3的动画远比DOM强大,所以可以把动画效果写进CSS,然后通过操作DOM元素的class,来展示动画。
- foo.classList.add('animate')
如果需要对动画使用回调函数,CSS 3也定义了相应的事件。
- el.addEventListener("webkitTransitionEnd", transitionEnded);
- el.addEventListener("transitionend", transitionEnded);
原生JS取代一些JQuery方法的更多相关文章
- 原生JS取代一些JQuery方法的简单实现
原生JS取代一些JQuery方法的简单实现 下面小编就为大家带来一篇原生JS取代一些JQuery方法的简单实现.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 1.选 ...
- 原生js获取鼠标坐标方法全面讲解-zmq
原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y 一.关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:eve ...
- 原生js格式化json的方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 类似jQuery的原生JS封装的ajax方法
一,前言: 前文,我们介绍了ajax的原理和核心内容,主要讲的是ajax从前端到后端的数据传递的整个过程. Ajax工作原理和原生JS的ajax封装 真正的核心就是这段代码: var xhr = ne ...
- 原生js事件和jquery事件的执行顺序问题
场景:近日,写前端页面时候,在针对输入框input操作时,用到了jquery的插件,插件中使用了jquery的focus()和blur()方法.但是同时,又需要在插件之外再针对输入框的获取焦点和失去焦 ...
- 原生js ajax与jquery ajax的区别
原生js ajax的调用: ajax({ type : "get", url : "02_ajax_get.txt", data : { "userN ...
- 轮播图原生js实现和jquery实现和js面向对象方式实现
原生JS实现 html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- 原生js操作dom的方法
今天学习了原生js的dom节点的操作,就记录下来,仅供自己以后参考. 1)创建节点:除了可以使用createElement创建元素,也可以使用createTextNode创建文本节点. documen ...
- 原生JS版和jQuery 版实现文件上传功能
<!doctype html> <html lang="zh"> <head> <meta charset="utf-8&quo ...
随机推荐
- pyhton3多线程
from time import ctime,sleep def music(): for i in range(2): print ("I was listening to music. ...
- Android OTA 升级之三:生成recovery.img
Android OTA 升级之三:生成recovery.img 作者: 宋立新 Email:zjujoe@yahoo.com 前言 得到了ota升级包后,我们就可以用它来升级系统了.Android 手 ...
- minimum-moves-to-equal-array-elements
https://leetcode.com/problems/minimum-moves-to-equal-array-elements/ package com.company; import jav ...
- Windows 下搭建LDAP服务器
五一闲来没事,加上项目正在进行UAT.抽空研究了一下LDAP相关知识.随手做一个记录. 为了方便阅读还是先介绍一下什么是LDAP? 前言.Lightweight Directory Access Pr ...
- core--主线程
windows的线程是windows可以分配给cpu的最小单元,对window应用程序的管理,最小的管理单位就是线程.那什么是线程?线程其实什么都不是,只是一个概念,没有实体,又看不见.这个概念的定义 ...
- Qt Assistant介绍
简介 Qt Assistant也就是我们常说的Qt助手,是一款用于呈现在线文档的工具. 简介 一分钟学会使用 Qt参考文档 Qt Assistant详解 命令行选项 工具窗口 文档窗口 工具栏 菜单 ...
- 采用RPC方式和document方式 开发Axis2的WebService客户端
import javax.xml.namespace.QName; import org.apache.axiom.om.OMAbstractFactory; import org.apache.ax ...
- 了解Objective-C中NSAutoreleasePool使用方法
本文的目的是来了解Objective-C中NSAutoreleasePool使用方法,Objective-C的Foundation库实际上是种运行级对象系统,与一般的对象语言,例如C++,Java不一 ...
- (转载)DataTable使用技巧总结
在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.Da ...
- Perfect smooth scrolling in UITableViews
https://medium.com/ios-os-x-development/perfect-smooth-scrolling-in-uitableviews-fd609d5275a5 Diffic ...