<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
    主站蜘蛛池模板: 亚洲大香人伊一本线| 噼里啪啦免费观看高清动漫4| 亚洲人成综合网站7777香蕉| 伊人久久大香线蕉亚洲五月天| 美女被免费视频网站a国产| 麻豆成人久久精品二区三区免费 | 你好老叔电影观看免费| 国产亚洲精品美女久久久久 | 最近免费中文字幕中文高清| 国产成人亚洲精品蜜芽影院| 亚洲色成人WWW永久在线观看 | 亚欧免费视频一区二区三区| 成人精品一区二区三区不卡免费看| 人妻无码中文字幕免费视频蜜桃| 久久久久精品国产亚洲AV无码| 亚洲精品无码久久久久久久| 亚洲av色福利天堂| 国产AV无码专区亚洲AV男同| 亚洲中文字幕无码一区| 91麻豆精品国产自产在线观看亚洲| 免费一级成人毛片| 免费大片黄手机在线观看| 国产成人免费a在线视频app| 国产精品深夜福利免费观看| 女人18毛片a级毛片免费| 夜夜嘿视频免费看| 免费看www视频| 国产女高清在线看免费观看| 国产精品国产午夜免费福利看| 国产福利免费观看| 免费观看午夜在线欧差毛片| 免费午夜爽爽爽WWW视频十八禁| 国产gav成人免费播放视频| 免费国产一级特黄久久| 亚洲第一区精品日韩在线播放| 亚洲国产精品成人一区| 亚洲午夜福利精品无码| 亚洲伊人色欲综合网| 亚洲AV无码久久寂寞少妇| 亚洲高清无在码在线无弹窗| 亚洲人成影院77777|