你不需要jQuery(五)
什么不用jQuery?因为它让你的网站体积变得臃肿。你的网站并不真的需要jQuery,不需要它带来的额外体积、带宽和加载时间。
用原生JavaScript简单实现jQuery提供的功能和方法
查找、选择页面元素
// jQuery 实现
var els = $('.el'); // 原生JavaScript实现
var els = document.querySelectorAll('.el'); // 简写
var $ = function (el) {
return document.querySelectorAll(el);
} var els = $('.el');
创建元素
// jQuery 实现
var newEl = $('<div/>'); // 原生JavaScript实现
var newEl = document.createElement('div');
事件、监听器操作
// jQuery 实现
$('.el').on('event', function() { }); // 原生JavaScript实现
[].forEach.call(document.querySelectorAll('.el'), function (el) {
el.addEventListener('event', function() { }, false);
});
设置、修改和获取属性值
// jQuery 实现
$('.el').filter(':first').attr('key', 'value');
$('.el').filter(':first').attr('key'); // 原生JavaScript实现
document.querySelector('.el').setAttribute('key', 'value');
document.querySelector('.el').getAttribute('key');
增加/修改/删除/反转 类操作
// jQuery 实现
$('.el').addClass('class');
$('.el').removeClass('class');
$('.el').toggleClass('class'); // 原生JavaScript实现
document.querySelector('.el').classList.add('class');
document.querySelector('.el').classList.remove('class');
document.querySelector('.el').classList.toggle('class');
追加元素 Append
// jQuery 实现
$('.el').append($('<div/>')); // 原生JavaScript实现
document.querySelector('.el').appendChild(document.createElement('div'));
复制、克隆元素
// jQuery 实现
var clonedEl = $('.el').clone(); // 原生JavaScript实现
var clonedEl = document.querySelector('.el').cloneNode(true);
删除元素
// jQuery 实现
$('.el').remove(); // 原生JavaScript实现
remove('.el'); function remove(el) {
var toRemove = document.querySelector(el); toRemove.parentNode.removeChild(toRemove);
}
父元素操作
// jQuery 实现
$('.el').parent(); // 原生JavaScript实现
document.querySelector('.el').parentNode;
前一个/下一个/临近同辈元素
/ jQuery 实现
$('.el').prev();
$('.el').next(); // 原生JavaScript实现
document.querySelector('.el').previousElementSibling;
document.querySelector('.el').nextElementSibling;
XHR aka AJAX
新版的JavaScript API里提供了一个全新的可以实现ajax的API——fetch,这个api采用了全新的 Promise 架构,使用起来更方便,更灵活,详细用法请参考《你不需要jQuery(三):新AJAX方法fetch()》。
下面是传统的实现方式:
// jQuery 实现
$.get('url', function (data) { });
$.post('url', {data: data}, function (data) { }); // 原生JavaScript实现 // 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});
不可否认,jQuery有时候是开发项目时必不可少的,但不同的项目,不同的场景,项目的技术架构,都需要做不同的考量,经过冷静的思考,我们就会发现,很多时候,我并不需要jQuery,使用原生JavaScript技术反而项目变得更精简、效率更高。
你不需要jQuery(五)的更多相关文章
- 从零开始学习jQuery (五) 事件与事件对象
本系列文章导航 从零开始学习jQuery (五) 事件与事件对象 一.摘要 事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解 ...
- jQuery五屏轮播手风琴切换代码
jQuery五屏轮播手风琴切换代码 在线演示本地下载
- jQuery(五): Deferred
jQuery(五): Deferred 有啥用 通常来说,js请求数据,无论是异步还是同步,都不会立即获取到结果,通常而言,我们一般是是使用回调函数再执行,而 deferred就是解决jQuery的回 ...
- jQuery(五)、筛选
1 过滤 1.eq(index | -index) 获取第N个元素,index为元素索引,-index值基于最后一个元素的位置(从 1 开始) 2.first() 获取第一个元素 3.last() 获 ...
- 从零开始学习jQuery(转)
本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...
- Jquery系列教程
最近想重新温习下Jquery,发现园子里有个很棒的系列教材,所以Mark下来. 转载自:http://www.cnblogs.com/zhangziqiu/tag/jQuery%E6%95%99%E7 ...
- 从零开始学习jQuery
转自:http://www.cnblogs.com/zhangziqiu/archive/2009/04/30/jQuery-Learn-1.html 本系列文章导航 从零开始学习jQuery (一) ...
- 【转】jQuery教程
“jQuery风暴” 推荐及配套代码下载 ziqiu.zhang 2011-03-24 00:28 阅读:15339 评论:100 从零开始学习jQuery(剧场版) 你必须知道的javascri ...
- vue-cli引入jquery方法
方法一: 一,在package.json里加入, dependencies:{ ”jquery“:”^2.3.4“ } 二,在webpack.base.conf.js里加入 const webpack ...
随机推荐
- 归约函数reduce&映射数组map(笔记)
function forEach(array,action){ ;i<array.length;i++) action(array[i]); } function reduce(combine, ...
- Linux 命令 - route: 显示或操作路由表
route 命令查看路由表或者手动地添加.删除和修改路由表中的条目. 命令格式 route [-CFvnNee] [-A family] route [-v] [-A family] add [-ne ...
- Oracle的GUID:Raw(16)
最近用了Oracle作为开发的数据库.以前用Sqlserver的时候用GUID作为主键的(数据类型:uniqueidentifier),Oracle的GUID类型变成RAW(16)了.从数据库读出来R ...
- 打包并发布自己的Android应用(eclipse)
第一步,在Eclipse中选择需要打包的项目,然后右键--选择Export,会弹出一个打包的提示框,如下图所示. 按Next之后,会继续出现一个提示框,这里你可以选择自己需要打包的项目(默认是刚才选中 ...
- java进阶一之jdk8新特性
1.官方发布的jdk8新特性 2.51CTO相关专题
- 《JSON必知必会》
每天上下班在地铁上很适合看这种书,入门级.难点不多.简约不失严谨. 自从全面转向ASP.NET MVC,现在基本上每天都和JSON打交道,效率.习惯.速度都要掌握. 这本书读起来很快,所以读完也蛮有成 ...
- jQuery—一些常见方法(1)【filter(),not(),has(),next(),prev(),find(),eq(),index(),attr(),】
1.filter()和not()方法 filter()和not()是一对反方法,filter()是过滤. filter()方法是针对元素自身.(跟has()方法有区别) <script type ...
- Winform程序只允许运行一个程序实例
/// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { Application ...
- 【原】EF简单使用
/// <summary> /// 数据上下文对象 /// </summary> static TestEntities te = new TestEntities(); st ...
- jQuery scroll(滚动)延迟加载
延迟加载 $(window).scroll(function(){ var scrollHeight = $(document).height(); //文档高度 var scrollTop = $( ...