午后星期午
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2013年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
统计
随笔 - 38
文章 - 0
评论 - 0
引用 - 0
常用链接
我的随笔
我的评论
我的参与
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Java(10)
(rss)
JavaEE(18)
(rss)
Java编程思想摘录
(rss)
Js(8)
(rss)
Linux学习笔记
(rss)
SQL(1)
(rss)
XML&PROPERTIES(1)
(rss)
随笔档案
2014年3月 (3)
2013年12月 (35)
搜索
最新评论
阅读排行榜
1. 使用Spring mvc 利用java的反射技术,来扫描对应包下的注解请求url 统一保存在数据库中(1242)
2. Spring的JNDI数据源连接池配置示例及Spring对JNDI实现分析(345)
3. Spring邮件服务:Maven + Spring SMTP Mail(301)
4. Spring邮件服务之附件:Maven + Spring SMTP Mail With Attachment(270)
5. JS计算包含英文与汉字的字符串长度(一个汉字=2个字节)(235)
评论排行榜
1. Java 单例模式详解(0)
2. 值传递、引用传递的区别(0)
3. 使用Spring mvc 利用java的反射技术,来扫描对应包下的注解请求url 统一保存在数据库中(0)
4. 使用jQuery解析JSON数据(0)
5. Spring的JNDI数据源连接池配置示例及Spring对JNDI实现分析(0)
忘掉jQuery,使用JavaScript原生API
jQuery 目前已经成为最流行的JavaScript库,它可以让开发者“write less, do more(写得更少,做得更多)”,这也是它的核心理念。通过它,用户可以更方便地处理HTML documents、events,更轻松地实现动画效果、AJAX交互等。
尽管jQuery帮助开发者节省了大量的工作,但是并不是所有的产品都适合使用jQuery。jQuery 2.0.3版本有236KB,压缩版也有81KB,这意味着你的Web产品需要额外的加载时间和带宽,而在移动设备上则需要更多。
如果你的产品中只有少量的前端效果或DOM操作,那么完全可以抛弃臃肿的jQuery,转而使用JavaScript原生API来实现。
以下是jQuery和JavaScript实现相同操作的等价代码。
选择元素
Javascript代码
// jQuery
var
els = $(
'.el'
);
// 原生方法
var
els = document.querySelectorAll(
'.el'
);
// 函数法
var
$ =
function
(el) {
return
document.querySelectorAll(el);
}
var
els = $(
'.el'
);
// 或者使用regex-based micro-selector库,地址:http://jsperf.com/micro-selector-libraries
创建元素
Javascript代码
// jQuery
var
newEl = $(
'<div/>'
);
// 原生方法
var
newEl = document.createElement(
'div'
);
添加事件监听器
Javascript代码
// jQuery
$(
'.el'
).on(
'event'
,
function
() {
});
// 原生方法
[].forEach.call(document.querySelectorAll(
'.el'
),
function
(el) {
el.addEventListener(
'event'
,
function
() {
},
false
);
});
设置/获取属性
Javascript代码
// jQuery
$(
'.el'
).filter(
':first'
).attr(
'key'
,
'value'
);
$(
'.el'
).filter(
':first'
).attr(
'key'
);
// 原生方法
document.querySelector(
'.el'
).setAttribute(
'key'
,
'value'
);
document.querySelector(
'.el'
).getAttribute(
'key'
);
添加/移除/切换类
Javascript代码
// jQuery
$(
'.el'
).addClass(
'class'
);
$(
'.el'
).removeClass(
'class'
);
$(
'.el'
).toggleClass(
'class'
);
// 原生方法
document.querySelector(
'.el'
).classList.add(
'class'
);
document.querySelector(
'.el'
).classList.remove(
'class'
);
document.querySelector(
'.el'
).classList.toggle(
'class'
);
附加内容(Append)
Javascript代码
// jQuery
$(
'.el'
).append($(
'<div/>'
));
// 原生方法
document.querySelector(
'.el'
).appendChild(document.createElement(
'div'
));
克隆元素
Javascript代码
// jQuery
var
clonedEl = $(
'.el'
).clone();
// 原生方法
var
clonedEl = document.querySelector(
'.el'
).cloneNode(
true
);
移除元素
Javascript代码
// jQuery
$(
'.el'
).remove();
// 原生方法
remove(
'.el'
);
function
remove(el) {
var
toRemove = document.querySelector(el);
toRemove.parentNode.removeChild(toRemove);
}
获取父元素
Javascript代码
// jQuery
$(
'.el'
).parent();
// 原生方法
document.querySelector(
'.el'
).parentNode;
上一个/下一个元素
Javascript代码
// jQuery
$(
'.el'
).prev();
$(
'.el'
).next();
// 原生方法
document.querySelector(
'.el'
).previousElementSibling;
document.querySelector(
'.el'
).nextElementSibling;
XHR或AJAX
Javascript代码
// jQuery
$.get(
'url'
,
function
(data) {
});
$.post(
'url'
, {data: data},
function
(data) {
});
// 原生方法
// 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});
以上这些只是很少一部分,你可以在浏览器的控制台中找到更多东西,或者可以参考
MDN的JS API reference
或者
WPD的DOM文档
。
你也可以使用其他非常轻量级的库代替,比如
http://microjs.com/
列出的一些库,根据你的需求选择最合适的库,但首先要清楚,除非是不使用库无法实现某项功能,否则还是使用原生JavaScript。
英文原文:
How to forget about jQuery and start using native JavaScript APIs
posted on 2013-12-31 13:55
午后星期午
阅读(98)
评论(0)
编辑
收藏
所属分类:
Js
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
使用jQuery解析JSON数据
重复提交、重复刷新、防止后退的问题以及处理方式
javascript 增,删,查,改 cookies
JavaScript中json对象和string对象之间的转化
JS计算包含英文与汉字的字符串长度(一个汉字=2个字节)
JS截取字符长度(按字节)
JS 获取字符串长度,截取字符串(中英文,一个汉字相当于2个字符)
忘掉jQuery,使用JavaScript原生API
Powered by:
BlogJava
Copyright © 午后星期午