<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    午后星期午

    忘掉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代碼 
    1. // jQuery   
    2. var  els = $( '.el' );  
    3.   
    4. // 原生方法   
    5. var  els = document.querySelectorAll( '.el' );  
    6.   
    7. // 函數法   
    8. var  $ =  function  (el) {  
    9.   return document.querySelectorAll(el);  
    10. }  
    11.   
    12. var  els = $( '.el' );  
    13.   
    14. // 或者使用regex-based micro-selector庫,地址:http://jsperf.com/micro-selector-libraries   


    創建元素  

    Javascript代碼 
    1. // jQuery   
    2. var  newEl = $( '<div/>' );  
    3.   
    4. // 原生方法   
    5. var  newEl = document.createElement( 'div' );  


    添加事件監聽器  

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


    設置/獲取屬性  

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


    添加/移除/切換類  

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


    附加內容(Append)  

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


    克隆元素  

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


    移除元素  

    Javascript代碼 
    1. // jQuery   
    2. $('.el').remove();  
    3.   
    4. // 原生方法   
    5. remove('.el');  
    6.   
    7. function  remove(el) {  
    8.   var toRemove = document.querySelector(el);  
    9.   
    10.   toRemove.parentNode.removeChild(toRemove);  
    11. }  


    獲取父元素  

    Javascript代碼 
    1. // jQuery   
    2. $('.el').parent();  
    3.   
    4. // 原生方法   
    5. document.querySelector('.el').parentNode;  


    上一個/下一個元素  

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


    XHR或AJAX  

    Javascript代碼 
    1. // jQuery   
    2. $.get('url'function (data) {  
    3.   
    4. });  
    5. $.post('url', {data: data}, function (data) {  
    6.   
    7. });  
    8.   
    9. // 原生方法   
    10. // get   
    11. var  xhr =  new  XMLHttpRequest();  
    12.   
    13. xhr.open('GET', url);  
    14. xhr.onreadystatechange = function (data) {  
    15.   
    16. }  
    17. xhr.send();  
    18.   
    19. // post   
    20. var  xhr =  new  XMLHttpRequest()  
    21.   
    22. xhr.open('POST', url);  
    23. xhr.onreadystatechange = function (data) {  
    24.   
    25. }  
    26. 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 午后星期午 閱讀(100) 評論(0)  編輯  收藏 所屬分類: Js

    主站蜘蛛池模板: 久别的草原电视剧免费观看| 亚洲精品中文字幕乱码影院| 亚洲人成自拍网站在线观看| 99视频免费观看| 精品亚洲一区二区| 91精品成人免费国产| 亚洲综合无码AV一区二区| 美女尿口扒开图片免费| 亚洲第一黄片大全| 免费一区二区无码视频在线播放 | 欧美a级成人网站免费| 亚洲成人黄色网址| 国拍在线精品视频免费观看| 亚洲中文字幕无码一去台湾 | 理论片在线观看免费| 免费萌白酱国产一区二区| 美女露隐私全部免费直播| 亚洲欧洲久久久精品| 成人免费无码H在线观看不卡| 亚洲精品国产自在久久| 中国内地毛片免费高清| 亚洲人成人无码网www电影首页| 国产麻豆一精品一AV一免费| 亚洲天堂中文字幕在线观看| 免费观看黄网站在线播放| 亚洲成AV人片高潮喷水| 亚洲精品综合久久| 一级毛片免费视频| 中文字幕亚洲精品无码| 亚洲国产一区二区视频网站| 无码日韩精品一区二区免费暖暖| 亚洲成人免费网站| 国产免费变态视频网址网站| A级毛片高清免费视频在线播放| 亚洲黄色三级网站| 国产在线a不卡免费视频| 久久久久久av无码免费看大片| 91天堂素人精品系列全集亚洲| 免费的一级片网站| 美女视频黄的免费视频网页| 亚洲一久久久久久久久|