<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 午后星期午 閱讀(106) 評論(0)  編輯  收藏 所屬分類: Js

    主站蜘蛛池模板: 在线综合亚洲中文精品| 久久国产成人亚洲精品影院| 成人奭片免费观看| 亚洲影院在线观看| 99久久99久久精品免费观看 | 亚洲欧美成人综合久久久| 免费无码作爱视频| 最近2019中文免费字幕| tom影院亚洲国产一区二区| 91精品成人免费国产片| 亚洲国产午夜福利在线播放| 美女被羞羞网站免费下载| 四虎影视永久免费观看| 黄网站在线播放视频免费观看 | 亚洲人成网77777色在线播放| 亚洲成AV人片在WWW色猫咪| a毛片免费全部在线播放**| 久久亚洲精品成人777大小说| 亚洲欧洲无码一区二区三区| 黄色网站软件app在线观看免费| 中文字幕视频免费在线观看 | 久久午夜羞羞影院免费观看| 亚洲精品电影天堂网| 中文字幕视频免费在线观看| 亚洲精品国产成人专区| 国产精品九九久久免费视频| 日本二区免费一片黄2019| 理论秋霞在线看免费| 亚洲中文字幕无码专区| 美国免费高清一级毛片| 亚洲精品成人网站在线观看| 午夜不卡AV免费| 亚洲成a人片在线观看中文动漫| 精品乱子伦一区二区三区高清免费播放| 久久久免费观成人影院| 久久精品国产精品亚洲毛片| 我想看一级毛片免费的| 久久WWW免费人成—看片| 亚洲最大免费视频网| 最近最好最新2019中文字幕免费| 亚洲精品乱码久久久久久不卡|