JQuery使用總結

目前接觸最多的頁面開發,基本仍是使用 JQuery 的。主要緣由基於:操做方便;頁面簡單;兼容良好;新手多……沒有能配合使用其餘方案的人。所以,本篇文章就是寫着玩加吐點槽的css

Write Less,Do More是JQuery的核心理念。因此大家就不要在工做中隨意造輪子了!html

1、Ajax

絕對禁止同步請求!必定要處理全部可能的狀況!前端

普通示例jquery

function getData(){
  var params= {}
  $.ajax({
    type: 'post',
    dataType: 'json',
    url: 'xxxxx',
    data: params,
    beforeSend: function(){},
    success: function(data){
       if(data.code != 1){
         // 失敗方法
         return;
       } 
       // 成功方法
    },
    error: function(){},
    complete: function(){}
  });
}

大部分兼容要求不高,公司使用同一個接口,只是傳參不一樣,所以,共通的ajax請求方案爲:git

function reqAjax (params) {
  var deferred = $.Deferred();
  $.ajax({
    type: 'post',
    dataType: 'json',
    url: 'xxxx',
    data: params,
    success: function(data){
      deferred.resolve(data);
    },
    error: function(err){
      deferred.reject(err);
    }
  });
  return deferred;
}

主要使用了JQuery(>1.5)的 deferred 對象。請求示例github

function getData () {
  // 一、校驗,或其餘方法獲取參數
  var params = {}
  // 二、自定義beforeSend
  // 三、請求數據
  var p = reqAjax(params);
  // 四、自定義success方法
  p.done(function (data) {});
  // 五、自定義error方法,通常屬於超時或網絡不正常
  p.fail(function (err) {});
  // 以上執行成功以後可鏈式調用下一步操做
  p.then(function () {});
}

若是想單獨使用Ajax,通常來講推薦兩個方案:Zepto.js 和 本身去 github 搜索ajax

2、模板

根據設計的不一樣,有時須要重複添加一些元素。除了基本的模板插件外,還能夠充分使用 JQuery 的 clone 方法json

儘可能不要拼接字符串!bootstrap

假設dom結構爲:網絡

<!--bootstrap樣式,靜態界面寫完後,在test樣式上加上隱藏樣式hidden-->
<div class="test">
  <p>字段1:<span class="test1 text-info"></span></p>
  <p>字段2:<span class="test2 text-primary"></span></p>
  <p>字段3:<span class="test3 text-warning"></span></p>
</div>

接口請求成功,處理dom:

// 本身處理循環
function addList(arr){
  // 模擬請求過來的數據
  var data = {
    test1: Math.random().toFixed(5),
    test2: Math.random().toFixed(5),
    test3: Math.random().toFixed(5)
  }
  // 假設父級dom
  var pDom = $('.xxx');
  // 直接克隆已經寫好且隱藏的模板,去掉hidden
  var dom = pDom.find('.test.hidden').clone().removeClass('hidden');
  // 取巧的方法,根據字段標識的名稱取dom元素,而後賦值,通常來講還須要進行其餘的處理
  for(var key in data){
    dom.find('.'+key).text(data[key])
  }
  // 處理完畢,加入父級dom中
  pDom.append(dom);
}

主要是我不喜歡拼接字符串,懶得很,並且改別人的BUG好惡心。

3、事件

事件使用多看看教程就行,但如何使用得稍微琢磨一下

如:不要在 $(document).ready() 中初始化全部亂七八糟的方法,很難找的……

對於新添加的元素,添加點擊(或其餘)事件,可使用

$(parentDom).on('click', 'newDom', function(){});

$(newDom).live('click', function(){})

4、動效

做爲前端,不要光想着js,好歹也學學 animate.css

PC端使用動效是沒問題的,但移動端網頁,如slideUp、animate之類,最好用css樣式代替,否則會有卡頓效果。

……移動端爲何還用jquery?jquery 壓縮版通常在80~90 kb,對現在的網絡是能夠接受的,固然最好用 zepto.js 代替。

請在完成任務以後再考慮優化……

5、No JQuery

不要把不熟悉的東西帶到工做中,除非沒有更好的替代方案

若不想使用JQuery,且不考慮兼容性,可參考:You-Dont-Need-jQuery

雜項

若是有空,記得重構代碼~

原本想寫點具備實用性的東西,但Jquery的特性網上已經有不少了,所以再也不贅述,能給新人一點提示就行。

相關文章
相關標籤/搜索