国产超碰人人做人人爽av动图,99久久免费只有精品国产,青青视频精品观看视频,亚洲成a人片在线观看无码下载 ,天天做av天天爱天天爽,国产亚洲精品一区二三区,国产高清视频色拍,亚洲乱理伦片在线观看中字
MENU 服務 案例
網站建設-網站設計-北京網站建設-高端網站制作公司-尚品中國
我們通過擁抱變化創造
360°的品牌價值__
簡體
簡體中文 English

尚品與山東真諾智能設備有限公司簽署網站改版合作協議

類型:尚品動態 了解更多

網站制作如何用javascript代替Jquery

來源:尚品中國| 類型:網站百科 |時間:2015-04-29
 jQuery是現在最流行的JavaScript工具庫。

據統計,目前全世界57.3%的網站使用它。也就是說,10個網站里面,有6個使用jQuery。如果只考察使用工具庫的網站制作,這個比例就會上升到驚人的91.7%。

雖然jQuery如此受歡迎,但是它臃腫的體積也讓人頭痛不已。jQuery 2.0的原始大小為235KB,優化后為81KB;如果是支持IE6、7、8的jQuery 1.8.3,原始大小為261KB,優化后為91KB。

這樣的體積,即使是寬帶環境,完全加載也需要1秒或更長,更不要說移動設備了。這意味著,如果你使用了jQuery,用戶至少延遲1秒,才能看到網頁效果。考慮到本質上,jQuery只是一個操作DOM的工具,我們不僅要問:如果只是為了幾個網頁特效,是否有必要動用這么大的庫?

2006年,jQuery誕生的時候,主要用于消除不同瀏覽器的差異(主要是IE6),為開發者提供一個簡潔的統一接口。相比當時,如今的情況已經發生了很大的變化。IE的市場份額不斷下降,以ECMAScript為基礎的JavaScript標準語法,正得到越來越廣泛的支持。開發者直接使用JavScript標準語法,就能同時在各大瀏覽器運行,不再需要通過jQuery獲取兼容性。

下面就探討如何用JavaScript標準語法,取代jQuery的一些主要功能,做到jQuery-free。

一、選取DOM元素

jQuery的核心是通過各種選擇器,選中DOM元素,可以用querySelectorAll方法模擬這個功能。

  1. var $ = document.querySelectorAll.bind(document); 

這里需要注意的是,querySelectorAll方法返回的是NodeList對象,它很像數組(有數字索引和length屬性),但不是數組,不能使用pop、push等數組特有方法。如果有需要,可以考慮將Nodelist對象轉為數組。

  1. myList = Array.prototype.slice.call(myNodeList); 

二、DOM操作

DOM本身就具有很豐富的操作方法,可以取代jQuery提供的操作方法。

尾部追加DOM元素。

  1. // jQuery寫法  
  2. $(parent).append($(child));  
  3.  
  4. // DOM寫法  
  5. parent.appendChild(child) 

頭部插入DOM元素。

  1. // jQuery寫法  
  2. $(parent).prepend($(child));  
  3.  
  4. // DOM寫法  
  5. parent.insertBefore(child, parent.childNodes[0]) 

刪除DOM元素。

  1. // jQuery寫法  
  2. $(child).remove()  
  3.  
  4. // DOM寫法  
  5. child.parentNode.removeChild(child) 

三、事件的監聽

jQuery的on方法,完全可以用addEventListener模擬。

  1. Element.prototype.on = Element.prototype.addEventListener; 

為了使用方便,可以在NodeList對象上也部署這個方法。

  1. NodeList.prototype.on = function (event, fn) {  
  2. []['forEach'].call(this, function (el) {  
  3. el.on(event, fn);  
  4. });  
  5. return this;  
  6. }; 

四、事件的觸發

jQuery的trigger方法則需要單獨部署,相對復雜一些。

  1. Element.prototype.trigger = function (type, data) {  
  2. var event = document.createEvent('HTMLEvents');  
  3. event.initEvent(type, true, true);  
  4. event.data = data || {};  
  5. event.eventName = type;  
  6. event.target = this;  
  7. this.dispatchEvent(event);  
  8. return this;  
  9. }; 

在NodeList對象上也部署這個方法。

  1. NodeList.prototype.trigger = function (event) {  
  2. []['forEach'].call(this, function (el) {  
  3. el['trigger'](event);  
  4. });  
  5. return this;  
  6. }; 

五、document.ready

目前的最佳實踐,是將JavaScript腳本文件都放在頁面底部加載。這樣的話,其實document.ready方法(jQuery簡寫為$(function))已經不必要了,因為等到運行的時候,DOM對象已經生成了。

六、attr方法

jQuery使用attr方法,讀寫網頁元素的屬性。

  1.  $("#picture").attr("src", "http://url/to/image"); 

DOM元素允許直接讀取屬性值,寫法要簡潔許多。

  1. $("#picture").src = "http://url/to/image"; 

需要注意,input元素的this.value返回的是輸入框中的值,鏈接元素的this.href返回的是絕對URL。如果需要用到這兩個網頁元素的屬性準確值,可以用this.getAttribute('value')和this.getAttibute('href')。

七、addClass方法

jQuery的addClass方法,用于為DOM元素添加一個class。

  1. $('body').addClass('hasJS'); 

DOM元素本身有一個可讀寫的className屬性,可以用來操作class。

  1. document.body.className = 'hasJS';  
  2. // or  
  3. document.body.className += ' hasJS';  

HTML 5還提供一個classList對象,功能更強大(IE 9不支持)。

  1. document.body.classList.add('hasJS');  
  2. document.body.classList.remove('hasJS');  
  3. document.body.classList.toggle('hasJS');  
  4. document.body.classList.contains('hasJS'); 

八、CSS

jQuery的css方法,用來設置網頁元素的樣式。

  1. $(node).css( "color", "red" ); 

DOM元素有一個style屬性,可以直接操作。

  1. element.style.color = "red";;  
  2. // or  
  3. element.style.cssText += 'color:red'; 

九、數據儲存

jQuery對象可以儲存數據。

  1. $("body").data("foo", 52); 

HTML 5有一個dataset對象,也有類似的功能(IE 10不支持),不過只能保存字符串。

  1. element.dataset.user = JSON.stringify(user);  
  2. element.dataset.score = score; 

十、Ajax

jQuery的Ajax方法,用于異步操作。

  1. $.ajax({  
  2. type: "POST",  
  3. url: "some.php",  
  4. data: { name: "John", location: "Boston" }  
  5. }).done(function( msg ) {  
  6. alert( "Data Saved: " + msg );  
  7. }); 

我們可以定義一個request函數,模擬Ajax方法。

  1. function request(type, url, opts, callback) {  
  2. var xhr = new XMLHttpRequest();  
  3. if (typeof opts === 'function') {  
  4. callback = opts;  
  5. opts = null;  
  6. }  
  7. xhr.open(type, url);  
  8. var fd = new FormData();  
  9. if (type === 'POST' && opts) {  
  10. for (var key in opts) {  
  11. fd.append(key, JSON.stringify(opts[key]));  
  12. }  
  13. }  
  14. xhr.onload = function () {  
  15. callback(JSON.parse(xhr.response));  
  16. };  
  17. xhr.send(opts ? fd : null);  

然后,基于request函數,模擬jQuery的get和post方法。

  1. var get = request.bind(this, 'GET');  
  2. var post = request.bind(this, 'POST'); 

十一、動畫

jQuery的animate方法,用于生成動畫效果。

  1. $foo.animate('slow', { x: '+=10px' }); 

jQuery的動畫效果,很大部分基于DOM。但是目前,CSS 3的動畫遠比DOM強大,所以可以把動畫效果寫進CSS,然后通過操作DOM元素的class,來展示動畫。

  1. foo.classList.add('animate'); 

如果需要對動畫使用回調函數,CSS 3也定義了相應的事件。

  1. el.addEventListener("webkitTransitionEnd", transitionEnded);  
  2.  
  3. el.addEventListener("transitionend", transitionEnded);  

十二、替代方案

由于jQuery體積過大,替代方案層出不窮。

其中,最有名的是zepto.js。它的設計目標是以最小的體積,做到最大兼容jQuery的API。zepto.js 1.0版的原始大小是55KB,優化后是29KB,gzip壓縮后為10KB。

如果不求最大兼容,只希望模擬jQuery的基本功能,那么,min.js優化后只有200字節,而dolla優化后是1.7KB。

此外,jQuery本身采用模塊設計,可以只選擇使用自己需要的模塊。具體做法參見它的github網站,或者使用專用的Web界面。

來源聲明:本文章系尚品中國編輯原創或采編整理,如需轉載請注明來自尚品中國。以上內容部分(包含圖片、文字)來源于網絡,如有侵權,請及時與本站聯系(010-60259772)。
TAG標簽:

如果您的網站可以增加轉化次數并提高客戶滿意度,該怎么辦?

預約專業咨詢顧問溝通!

*尚品專業顧問將盡快與您聯系

免責聲明

非常感謝您訪問我們的網站。在您使用本網站之前,請您仔細閱讀本聲明的所有條款。

1、本站部分內容來源自網絡,涉及到的部分文章和圖片版權屬于原作者,本站轉載僅供大家學習和交流,切勿用于任何商業活動。

2、本站不承擔用戶因使用這些資源對自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問題參見國家有關法律法規,當本聲明與國家法律法規沖突時,以國家法律法規為準。

4、如果侵害了您的合法權益,請您及時與我們,我們會在第一時間刪除相關內容!

聯系方式:010-60259772
電子郵件:394588593@qq.com

免責聲明

非常感謝您訪問我們的網站。在您使用本網站之前,請您仔細閱讀本聲明的所有條款。

1、本站部分內容來源自網絡,涉及到的部分文章和圖片版權屬于原作者,本站轉載僅供大家學習和交流,切勿用于任何商業活動。

2、本站不承擔用戶因使用這些資源對自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問題參見國家有關法律法規,當本聲明與國家法律法規沖突時,以國家法律法規為準。

4、如果侵害了您的合法權益,請您及時與我們,我們會在第一時間刪除相關內容!

聯系方式:010-60259772
電子郵件:394588593@qq.com

主站蜘蛛池模板: 国产精品呻吟久久人妻无吗 国产乱子伦在线一区二区 亚洲国产精品无码久久九九大片 欧美国产日韩久久mv 成人免费无码大片a毛片户外 国产精品青青在线麻豆 男女啪啪免费观看无遮挡 日本欧美一区二区三区高清 亚洲一区二区三区高清在线看 精品999久久久久久中文字幕 亚洲国产呦萝小初 亚洲熟妇自偷自拍另欧美 日韩做a爰片久久毛片a片 日韩精品无码免费一区二区三区 狠狠五月深爱婷婷 久久久av波多野一区二区 无遮挡18禁啪啪免费观看 亚洲中文字幕一二三四区苍井空 黑人大战日本人妻嗷嗷叫不卡视频 av色综合久久天堂av色综合 偷窥 亚洲 另类 图片 熟女 狠狠色噜噜狠狠色综合久 玩中年熟妇让你爽视频 成人片黄网站色大片免费观看cn 尤物在线精品视频 国产精品成人无码a片在线看 亚洲欧洲国产精品香蕉网 18禁黄无码免费网站高潮 国产aⅴ精品一区二区三区尤物 午夜片无码区私人影院 免费无码av片在线观看国产| 高潮呻吟国产在线播放| 国产免费网站看v片在线观看| 精品久久久无码中文字幕一丶| 欧美性xxxx极品hd欧美风情| 2019最新久久久视频精品| 亚洲—本道中文字幕东京热| 国产精品成人无码a片在线看 | 9久9久热精品视频在线观看| 欧美激欧美啪啪片sm| 久久亚洲精品无码观看不卡|