zoukankan      html  css  js  c++  java
  • 使用原生js代替jQuery

    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});  




     from:http://www.iteye.com/news/28503
  • 相关阅读:
    day06 字典、元组、set的方法及常用操作
    python makestrans translate
    python 中locals() 和 globals()
    threading.local()
    进程 线程 协程
    微信机器人
    flask
    python is ==
    Beautiful Soup 4.4.0 基本使用方法
    12306
  • 原文地址:https://www.cnblogs.com/sunscheung/p/5580256.html
Copyright © 2011-2022 走看看