原生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 ...
随机推荐
- Android 如何设置默认语言
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- 【CCS仿真】用matlab把CCS保存的32位16进制的数据转换为十进制的数
2013-12-04 16:37:28 使用fscanf函数即可完成. 例如,CCS保存的.dat文件Copy_of_forward_i_f.dat如下: 1651 1 81008800 0 4000 ...
- (5)XML转化成TXT
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- PostgreSQL的创建表
PostgreSQL的CREATE TABLE语句是用来在任何指定的的数据库中创建一个新表. 语法 CREATE TABLE语句的基本语法如下: CREATE TABLE table_name( co ...
- [原]zoj3772--【水题】线段树区间查询+矩阵乘法
思路来源:http://blog.csdn.net/u013654696/article/details/23037407#comments [做浙大校赛的时候没有看这道题,事后做的.思路不是自己的, ...
- 设备模型之kobject,kset及其关系
Linux2.6以后的设备驱动,都是在设备模型的基础上构建的,因此,要编写linux下的设备驱动程序,不论是usb设备,pci设备等,都需要了解设备模型. 设备模型的基础结构体主要是kobject,k ...
- NDK(8)"Unknown Application ABI"的解决方案
ndk 调试本地应用时 报错如下 : console信息: [2015-08-17 19:52:05 - NdkSample] Unknown Application ABI: [2015-08-17 ...
- ionic中登陆逻辑控制
问题 登陆成功后从login.html调转到home.html,此时在home页面按back键又回到了login.html . 解决方案 登陆成功后,清除导航历史堆栈. 具体代码 menu.html ...
- 在maven项目中使用mybatis-generator-maven-plugin生成mybatis代码
项目整体的目录结构如下: pom.xml如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...
- ASP.NET MVC 实现二级域名
自从微软发布 ASP.NET MVC 和routing engine (System.Web.Routing)以来,就设法让我们明白你完全能控制URL和routing,只要与你的applicati ...