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

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

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

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
    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-11-28 09:31 禮物 閱讀(754) 評論(0)  編輯  收藏 所屬分類: jquery
    主站蜘蛛池模板: 在线播放免费人成视频网站| 亚洲国产精品久久久久秋霞小| 一级特黄录像免费播放肥| 免费A级毛片在线播放不收费| 国产成人精品日本亚洲语音 | 亚洲无码一区二区三区| 91精品国产免费久久久久久青草| 亚洲综合国产精品| 2019中文字幕在线电影免费| 1区1区3区4区产品亚洲| 曰批视频免费40分钟试看天天| 亚洲性色高清完整版在线观看| 日本免费xxxx色视频| 色偷偷亚洲女人天堂观看欧| 免费无码A片一区二三区 | 亚洲国产av高清无码| 免费AA片少妇人AA片直播| 亚洲欧洲日本在线观看| 蜜臀91精品国产免费观看| 激情小说亚洲图片| 亚洲自偷自偷在线制服 | 一本岛高清v不卡免费一三区| 亚洲av中文无码字幕色不卡| 免费一级毛片在线播放| 二个人看的www免费视频| 亚洲视频在线观看视频| 成人午夜视频免费| 美女羞羞免费视频网站| 国产成人亚洲综合色影视| 99爱视频99爱在线观看免费| 最新亚洲春色Av无码专区| 亚洲av无码不卡私人影院| 你懂的免费在线观看网站| 亚洲国产成人久久综合一区| 国产精品久免费的黄网站| 韩国免费a级作爱片无码| 亚洲精品中文字幕麻豆| 又黄又大又爽免费视频| 免费播放一区二区三区| 亚洲精品无码不卡在线播放| 亚洲中文字幕无码专区|