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


Posted in Javascript onSeptember 20, 2016

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方法的简单实现的全部内容了,希望对大家有所帮助,多多支持三水点靠木~

Javascript 相关文章推荐
HTML TO JavaScript 转换
Jun 26 Javascript
Javascript isArray 数组类型检测函数
Oct 08 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
Apr 25 Javascript
原生js和jQuery随意改变div属性style的名称和值
Oct 22 Javascript
JS去除iframe滚动条的方法
Apr 01 Javascript
浅谈JavaScript字符串与数组
Jun 03 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
C#中使用迭代器处理等待任务
Jul 13 Javascript
jQuery事件绑定用法详解
Sep 08 Javascript
Vue动态获取width的方法
Aug 22 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
Nov 04 Javascript
微信小程序自定义胶囊样式
Dec 27 Javascript
原生js实现ajax方法(超简单)
Sep 20 #Javascript
原生js仿jquery一些常用方法(必看篇)
Sep 20 #Javascript
原生js封装的一些jquery方法(详解)
Sep 20 #Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 #Javascript
jQuery在ie6下无法设置select选中的解决方法详解
Sep 20 #Javascript
jQuery简单倒计时效果完整示例
Sep 20 #Javascript
AngularJS中$watch和$timeout的使用示例
Sep 20 #Javascript
You might like
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
php 问卷调查结果统计
2015/10/08 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
2015/08/31 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
详解原生JS回到顶部
2019/03/25 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
python列表去重的二种方法
2014/02/14 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
Django的models中on_delete参数详解
2019/07/16 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
python中二分查找法的实现方法
2020/12/06 Python
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
公司庆典邀请函范文
2014/01/13 职场文书
求职意向书
2014/04/01 职场文书
小学六一主持词开场白
2015/05/28 职场文书
2015年教师节感言
2015/08/03 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
matplotlib画混淆矩阵与正确率曲线的实例代码
2021/06/01 Python