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

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

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

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評(píng)論 :: 0 Trackbacks
    jQuery目前已經(jīng)成為最流行的JavaScript庫(kù),它可以讓開發(fā)者“write less, do more(寫得更少,做得更多)”,這也是它的核心理念。通過它,用戶可以更方便地處理HTML documents、events,更輕松地實(shí)現(xiàn)動(dòng)畫效果、AJAX交互等。?

    盡管jQuery幫助開發(fā)者節(jié)省了大量的工作,但是并不是所有的產(chǎn)品都適合使用jQuery。jQuery 2.0.3版本有236KB,壓縮版也有81KB,這意味著你的Web產(chǎn)品需要額外的加載時(shí)間和帶寬,而在移動(dòng)設(shè)備上則需要更多。?

    如果你的產(chǎn)品中只有少量的前端效果或DOM操作,那么完全可以拋棄臃腫的jQuery,轉(zhuǎn)而使用JavaScript原生API來實(shí)現(xiàn)。 ?



    以下是jQuery和JavaScript實(shí)現(xiàn)相同操作的等價(jià)代碼。?

    選擇元素 ?

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


    創(chuàng)建元素 ?

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


    添加事件監(jiān)聽器 ?

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


    設(shè)置/獲取屬性 ?

    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');??


    附加內(nèi)容(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;??


    上一個(gè)/下一個(gè)元素 ?

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


    以上這些只是很少一部分,你可以在瀏覽器的控制臺(tái)中找到更多東西,或者可以參考 MDN的JS API reference 或者 WPD的DOM文檔 ?

    你也可以使用其他非常輕量級(jí)的庫(kù)代替,比如 http://microjs.com/ 列出的一些庫(kù),根據(jù)你的需求選擇最合適的庫(kù),但首先要清楚,除非是不使用庫(kù)無法實(shí)現(xiàn)某項(xiàng)功能,否則還是使用原生JavaScript。?

    英文原文: How to forget about jQuery and start using native JavaScript APIs
    posted on 2013-11-28 09:31 禮物 閱讀(754) 評(píng)論(0)  編輯  收藏 所屬分類: jquery
    主站蜘蛛池模板: 天天摸天天碰成人免费视频| 亚洲黄色在线视频| 精品亚洲福利一区二区| 成年女性特黄午夜视频免费看| 亚洲资源在线视频| 久久青草91免费观看| 在线A亚洲老鸭窝天堂| 日韩精品无码免费视频| 国产一区二区三区在线观看免费 | 99人中文字幕亚洲区| 在线视频网址免费播放| 亚洲免费在线观看| 婷婷国产偷v国产偷v亚洲| 四虎影院在线免费播放| 亚洲综合久久精品无码色欲| 免费精品国产日韩热久久| 亚洲成a人片在线观看中文app| 在线成人爽a毛片免费软件| 久久丫精品国产亚洲av| 日韩精品无码一区二区三区免费| 亚洲AV无码一区二区二三区软件 | 免费看成人AA片无码视频羞羞网| 亚洲欧洲另类春色校园小说| 67pao强力打造国产免费| 亚洲黄色免费观看| 久久成人国产精品免费软件| 亚洲特级aaaaaa毛片| 在线观看H网址免费入口| 久久精品国产亚洲AV忘忧草18| 国产免费毛不卡片| 在线观看日本亚洲一区| 成人免费视频88| 精品国产亚洲第一区二区三区| 免费a级毛片大学生免费观看| 免费无码一区二区| 伊人久久大香线蕉亚洲| 国内精品免费视频精选在线观看 | 性xxxx黑人与亚洲| 日本免费福利视频| 午夜在线免费视频 | 四虎影视精品永久免费|