如果你只需要针对现代浏览器,很多功能使用原生的 JavaScript 就可以实现。

DOM Selectors

//jQuery
var ele = $("#id .class");
//native javascript
var ele = document.querySelectorAll("#id .class");
//or native javascript
var ele1 = document.getElementById("id");
var ele = ele1.getElementsByClassName("ele1");

DOM 操作

Create elements

//jQuery
var newEl = $('<div />');
//native javascript
var newEl = document.createElement('div');

Append

//jQuery
#("#container").append("<span>content</span>");
//native javascript
var span = document.createElement("span");
span.appendChild(document.createTextNode("content"));
document.getElementById("container").appendChild(span);
//or native javascript, jQuery uses the native innerHTML method
document.getElementById("container").innerHTML += "<span>content</span>";

remove all child nodes

//jQuery
$("container").empty();
//The native equivalent using innerHTML
document.getElementById("container").innerHTML = null;
//or native javascript using removeChild
var c = document.getElementById("container");
while(c.lastChild) c.removeChild(c.lastChild);

remove the whole elemet from the DOM

//jQuery
$("#container").remove();
//native javascript
var c = document.getElementById("container");
c.parentNode.removeChild(c);

Clone the whole element from the DOM

//jQuey
var cloneEl = $("#container").clone();
//native javasript
var cloneEl = document.getElementById("container").cloneNode(true);

 parent

//jQuery
$('#el').parent();
//ntive javascript
document.getElementById('el').parentNode;

prev/next element

//jQuery
$("#el").prev();
$("#el").next();
//native javascript
document.getElementById("el").previousElementSibling;
document.getElementById("el").nexElementSibling;

css manipulation

class manipulation

//jQuery
$("#ele").addClass("myclass");
$("#ele").removeClass("myclass");
$("#ele").toggleClass("myclass");
//native javascript
function addClasses(node, cla){
if(!node.length) node = [node];
for(var n=0,m=node.length;n<m;n++){
if((" "+node[n].className+" ").indexOf(" "+cla+" ") <0){
node[n].className += " "+cla;
}
}
} function removeClass(node, cla){
if(!node.length) node = [node];
for(var n=0,m=node.length;n<m;n++){
if((" "+node[n].className+" ").indexOf(" "+cla+" ") >= 0){
node[n].className = (" "+node[n].className+" ").replace(" "+cla+" ", " ").replace( /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "" );
}
} }
//remove myclass to all nodes
removeClass(document.querySelectorAll("p"), "myclass"); function toggleClass(node, cla){
if(!node.length) node = [node];
for(var n=0,m=node.length;n<m;n++){
if((" "+node[n].className+" ").indexOf(" "+cla+" ") >= 0){
node[n].className = (" "+node[n].className+" ").replace(" "+cla+" ", " ").replace( /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "" );
}else{
node[n].className += " "+cla;
}
}
}
//toggle myclass to all nodes
toggleClass(document.querySelectorAll("p"), "myclass");
//or native javascript using classList
document.getElementById("ele").classList.add("myclass");
document.getElementById("ele").classList.remove("myclass");
document.getElementById("ele").classList.toggle("myclass");

style manipulation

//jQuery
$("#ele").css({
color: "#c00"
})
//native javascript
var ele = document.getElementById("ele");
ele.style.color = "#c00";

set/get attribute

//jQuery
$('#ele').attr('key', 'value');
$('#ele').attr('key');
//native javascript
document.getElementById("ele").setAttribute('key', 'value');
document.getElementById("ele").getAttribute("key");

event handling

document ready

//jQuery
$(start)
//native javascript
document.addEventListener("DOMContentLoaded", start);

forEach

//jQuery
$("p").each(function(i){
console.log("index " + i + ": " + this);
});
//native javascript
[].forEach.call(document.getElementsByTagName("p"),function(obj,i){consol.log("index "+i+": "+obj)})

Events

//jQuery
$('.el').on('event', functio(){ });
//Native javascript
[].forEach.call(document.querySelectorAll('.el'), function(el){
el.addEventListener('event', function(){
}, false);
});

Ajax

//jQuery
$.get('url', function(data){
});
$.post('url', {data: data}, function(data){ });
//native javascript
//get
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange = function(){ }
xhr.send();
//post
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.onreadystatechange = function(){ }
xhr.send({data: data});

相关文章:

Native JavaScript Equivalents of jQuery Methods: the DOM and Forms

Native JavaScript Equivalents of jQuery Methods: Events, Ajax and Utilities

使用原生JavaScript的更多相关文章

  1. 原生javascript 实现 animate

    原生javascript 实现 animate //animate function getstyle(obj,name){ if(obj.currentStyle){ return obj.curr ...

  2. 浅谈 原生javaScript&&react 实现全局触摸按钮(附带对addeventlistener的了解)

    1.采用原生javaACript 实现全局触摸按钮 首先在控制台输出,观察事件有哪些关于触摸的字段可以使用,然后拿这些字段的数据开始来写方法. 因为要做的是全局触摸按钮,我需要拿到的是按钮时时的坐标位 ...

  3. 你可能不需要 jQuery!使用原生 JavaScript 进行开发

    很多的 JavaScript 开发人员,包括我在内,都很喜欢 jQuery.因为它的简单,因为它有很多丰富的插件可供使用,和其它优秀的工具一样,jQuery 让我们开发人员能够更轻松的开发网站和 We ...

  4. 原生JavaScript技巧大收集(11~20)-(终于又被我找到这篇文章了)

    11.原生JavaScript加入收藏夹 function AddFavorite(sURL, sTitle) { try { window.external.addFavorite(sURL, sT ...

  5. 原生javascript加载运行

    原生javascript加载运行 (function(){ //TODO sometings }()); 在要运行相应代码的位置加入script标签,创建函数并自执行; 关于window.onload ...

  6. 原生javascript模仿win8等待进度条。

    一.序言 一直很中意win8等待提示圆圈进度条.win8刚出来那会,感觉好神奇!苦于当时没思路,没去研究.通过最近网上找找资料,终于给搞出来了!先上Demo,献丑了!预览请看:win8进度条. 二.简 ...

  7. 表单美化-原生javascript和jQuery单选按钮(兼容IE6)

    最近很多人问怎么美化表单的元素,大家都知道表单元素在各个浏览器中的表现不一,反正也是特别的丑,那么问题就来了,我们能自己设计表单元素的外观么?答案是可以的,现在我们就来试试吧.我们用两种方式来实现这一 ...

  8. javascript学习-原生javascript的小特效(原生javascript实现链式运动)

    以下代码就不详细解析了,在我之前的多个运动效果中已经解析好多次了,重复的地方这里就不说明了,有兴趣的童鞋可以去看看之前的文章<原生javascript的小特效> <!DOCTYPE ...

  9. javascript学习-原生javascript的小特效(多个运动效果整理)

    以下代码就不详细解析了,在我之前的多个运动效果中已经解析好多次了,重复的地方这里就不说明了,有兴趣的童鞋可以去看看之前的文章<原生javascript的小特效> <!DOCTYPE ...

  10. 原生javascript开发仿微信打飞机小游戏

    今天闲来无事,于是就打算教一个初学javascript的女童鞋写点东西,因此为了兼顾趣味性与简易程度,果断想到了微信的打飞机小游戏.. 本来想用html5做的,但是毕竟人家才初学,连jquery都还不 ...

随机推荐

  1. vim替换及多行注释命令

    1.多行注释: . 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来 . 按大写字母I,再插入注释符,例如// . 按esc键就 ...

  2. Node.js 学习(三) NPM 使用介绍

    NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并 ...

  3. 阿里云无线&前端团队是如何基于webpack实现前端工程化的

    背景 前端经历了初期的野蛮生长(切图,写简单的特效)——为了兼容浏览器兼容性而出现的各种类库(JQUERY,YUI等——mv*(饱暖思淫欲,代码多了,也就想到怎样组织代码结构,backbone,ang ...

  4. css3动画笔记

    ------------------------------------------------------------------------------------ @keyframes anim ...

  5. Ubuntu 下编译安装linux

    1. 准备工作切换为管理员权限,sudo –i 输入用户密码 进入root 权限apt-get install build-essential kernel-package libncurses5-d ...

  6. 【BZOJ】【2480】【SPOJ 3105】Mod

    扩展BSGS Orz zyf……然而他的题解对AC大神的题解作了引用……而坑爹的百度云……呵呵了... 扩展BSGS模板题 /************************************* ...

  7. Facebook

    Facebook登录为iOS Facebook的SDK为iOS提供了各种登录的经验,你的应用程序可以使用它来 ​​验证一个人.这份文件包括了所有你需要知道,以落实Facebook登录在你的iOS应用程 ...

  8. 关灯问题 dp

    题意是一排路灯,每个路灯有耗电量,照明度,需要给这n个路灯按顺序分组,每组内的最大耗电量是电灯数乘t,可以选择关闭一些电灯,求最大的照明度: 这题思路很明显,预处理出一个g[i][j]表示i到j分为一 ...

  9. apple wwdc resource

    1. every wwdc topic list http://asciiwwdc.com 2. wwdc video直接查看apple develop-> video 3. wwdc open ...

  10. vs2010 使用IIS EXPRESS出错.

      出现的问题:   解决方法: 左键单击Web项目,  查看属性选项卡, 将 托管管道模式改成Classic就可以了.