原生javascript 实现jQuery代码效果对比

以下是jQuery和JavaScript实现相同操作的等价代码。

选择元素

Javascript代码

  1. // jQuery
  2. var els = $(‘.el‘);
  3. // 原生方法
  4. var els = document.querySelectorAll(‘.el‘);
  5. // 函数法
  6. var $ = function (el) {
  7. return document.querySelectorAll(el);
  8. }
  9. var els = $(‘.el‘);
  10. // 或者使用regex-based micro-selector库,地址:http://jsperf.com/micro-selector-libraries

创建元素

Javascript代码

  1. // jQuery
  2. var newEl = $(‘<div/>‘);
  3. // 原生方法
  4. var newEl = document.createElement(‘div‘);

添加事件监听器

Javascript代码

  1. // jQuery
  2. $(‘.el‘).on(‘event‘, function() {
  3. });
  4. // 原生方法
  5. [].forEach.call(document.querySelectorAll(‘.el‘), function (el) {
  6. el.addEventListener(‘event‘, function() {
  7. }, false);
  8. });

设置/获取属性

Javascript代码

  1. // jQuery
  2. $(‘.el‘).filter(‘:first‘).attr(‘key‘, ‘value‘);
  3. $(‘.el‘).filter(‘:first‘).attr(‘key‘);
  4. // 原生方法
  5. document.querySelector(‘.el‘).setAttribute(‘key‘, ‘value‘);
  6. document.querySelector(‘.el‘).getAttribute(‘key‘);

添加/移除/切换类

Javascript代码

  1. // jQuery
  2. $(‘.el‘).addClass(‘class‘);
  3. $(‘.el‘).removeClass(‘class‘);
  4. $(‘.el‘).toggleClass(‘class‘);
  5. // 原生方法
  6. document.querySelector(‘.el‘).classList.add(‘class‘);
  7. document.querySelector(‘.el‘).classList.remove(‘class‘);
  8. document.querySelector(‘.el‘).classList.toggle(‘class‘);

附加内容(Append)

Javascript代码

  1. // jQuery
  2. $(‘.el‘).append($(‘<div/>‘));
  3. // 原生方法
  4. document.querySelector(‘.el‘).appendChild(document.createElement(‘div‘));

克隆元素

Javascript代码

  1. // jQuery
  2. var clonedEl = $(‘.el‘).clone();
  3. // 原生方法
  4. var clonedEl = document.querySelector(‘.el‘).cloneNode(true);

移除元素

Javascript代码

  1. // jQuery
  2. $(‘.el‘).remove();
  3. // 原生方法
  4. remove(‘.el‘);
  5. function remove(el) {
  6. var toRemove = document.querySelector(el);
  7. toRemove.parentNode.removeChild(toRemove);
  8. }

获取父元素

Javascript代码

  1. // jQuery
  2. $(‘.el‘).parent();
  3. // 原生方法
  4. document.querySelector(‘.el‘).parentNode;

上一个/下一个元素

Javascript代码

  1. // jQuery
  2. $(‘.el‘).prev();
  3. $(‘.el‘).next();
  4. // 原生方法
  5. document.querySelector(‘.el‘).previousElementSibling;
  6. document.querySelector(‘.el‘).nextElementSibling;

XHR或AJAX

Javascript代码

    1. // jQuery
    2. $.get(‘url‘, function (data) {
    3. });
    4. $.post(‘url‘, {data: data}, function (data) {
    5. });
    6. // 原生方法
    7. // get
    8. var xhr = new XMLHttpRequest();
    9. xhr.open(‘GET‘, url);
    10. xhr.onreadystatechange = function (data) {
    11. }
    12. xhr.send();
    13. // post
    14. var xhr = new XMLHttpRequest()
    15. xhr.open(‘POST‘, url);
    16. xhr.onreadystatechange = function (data) {
    17. }
    18. xhr.send({data: data});
时间: 2024-11-24 06:25:51

原生javascript 实现jQuery代码效果对比的相关文章

为什么原生 JavaScript 开发越来越多受欢迎?是否应该跟风用原生JavaScript代替 jQuery等库?

本文标签:  jQuery的作用 原生JavaScript优势 jQuery官网 jQuery处理DOM和跨浏览器 JavaScript新特性 互联网杂谈 随着 JavaScript 本身的完善,越来越多的人开始喜欢使用原生 JavaScript 开发代替各种库,其中不少人发出了用原生 JavaScript 代替 jQuery 的声音.这并不是什么坏事,但也不见得就是好事.如果你真的想把 jQuery从前端依赖库中移除掉,我建议你慎重考虑. 首先 jQuery 是一个第三方库.库存在的价值之一在

四种常见的提示弹出框(success,warning,error,loading)原生JavaScript和jQuery分别实现

虽然说现在官方的自带插件已经有很多了,但是有时候往往不能满足我们的需求,下面我简单介绍一些 常见的四种提示弹出框(success,loading,error,warning),我分别用原生JavaScript和jQuery来介绍分享给各位博友! 一.首先介绍原生JavaScript来实现四种提示弹出框: 第一步:先看看html的建立 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:

为什么要用原生 JavaScript 代替 jQuery?

随着 JavaScript 本身的完善,越来越多的人开始喜欢使用原生 JavaScript 开发代替各种库,其中不少人发出了用原生 JavaScript 代替 jQuery 的声音.这并不是什么坏事,但也不见得就是好事.如果你真的想把 jQuery 从前端依赖库中移除掉,我建议你慎重考虑. 首先 jQuery 是一个第三方库.库存在的价值之一在于它能极大地简化开发.一般情况下,第三方库都是由原生语言特性和基础 API 库实现的.因此,理论上来说,任何库第三方库都是可以用原生语言特性代替的,问题在

javascript与jQuery选项卡效果

HTML结构: <!doctype html><html><head><meta charset="utf-8"><title>选项卡封装</title> </head> <body> <div class="div1" id="div1"> <ul class="list"> <li class=&q

Myeclipse 2014 javascript 添加 jquery 代码提示

近日在写js,在myeclipse中没有jquery代码的提示着实不方便,在网上使用度娘搜索添加提示方式,试了多种,现经测试以下方式可取. 1.打开help菜单下的install from site... ,如图 2.在弹出的对话框中点击add按钮,添加name(aptana)及location( http://download.aptana.com/studio3/plugin/install ) 信息 3.去掉group items by category的勾选,然后点击select all

常见的dom操作----原生JavaScript与jQuery

1.创建元素 文本节点 JavaScript: document.createElement(),只接收一个参数,创建后需要手动将其添加到文档树中,例如: var newDiv = document.createElement("div");if(document.body){ document.body.appendChild(newDiv);}else{ document.documentElement.appendChild(newDiv);} document.createTe

javascript,jquery代码规范

jquery代码规范 Coding Standards & Best Practices 中文翻译版:jquery编程的标准写法和最佳实践 javascript代码规范 引爆你的Javascript代码进化 https://github.com/fex-team/styleguide/blob/master/javascript.md https://github.com/hiwanz/javascript-style-reference http://www.cnblogs.com/husts

原生JS和JQuery代码编写窗口捕捉函数和页面视觉差效果(scroll()、offsetTop、滚动监听的妙用)

想实现窗口滚动到一定位置时,部分网页的页面发生一些变化,但是手头没有合适的插件,所以就想到自己编写一个简易的方法, 想到这个方法要有很高的自由度和适应性,在这,就尽量的削减其功能,若有错误的地方或者更好的建议,请大家评论,一同探讨, 好了废话不多说,下面开始干活了! 首先,说一下我想实现的基本功能: 此方法需要有2个基本形参,,一个是我要监测的标签a,另一个是我要监测标签相对于哪个标签b做的距离检测. 当a和b的距离达到一定范围的时候,让网页局部发生一些变化效果,这是我们的预期. 以下是我的方法

常见浏览器的宽高代码写法!有原生JavaScript和jquery两种写法-------------------------------以及我的个人网站

我的个人网站 点击链接!欢迎大家访问 下面是网页一些常见的宽高的获取.........这是原生的写法(JavaScript) 网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: document.body.offsetWidth (包括边线的宽) 网页可见区域高: document.body.offsetHeight (包括边线的高) 网页正文全文宽: document.body.scro