• JQuery使用总结


    目前接触最多的页面开发,基本还是使用 JQuery 的。主要原因基于:操作方便;页面简单;兼容良好;新手多……没有能配合使用其他方案的人。因此,本篇文章就是写着玩加吐点槽的

    Write Less,Do More是JQuery的核心理念。所以你们就不要在工作中随意造轮子了!

    一、Ajax

    绝对禁止同步请求!一定要处理所有可能的情况!

    普通示例

    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请求方案为:

    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 对象。请求示例

    function getData () {
      // 1、校验,或其他方法获取参数
      var params = {}
      // 2、自定义beforeSend
      // 3、请求数据
      var p = reqAjax(params);
      // 4、自定义success方法
      p.done(function (data) {});
      // 5、自定义error方法,一般属于超时或网络不正常
      p.fail(function (err) {});
      // 以上执行成功之后可链式调用下一步操作
      p.then(function () {});
    }

    如果想单独使用Ajax,一般来说推荐两个方案:Zepto.js 和 自己去 github 搜索

    二、模板

    根据设计的不同,有时需要重复添加一些元素。除了基本的模板插件外,还可以充分使用 JQuery 的 clone 方法

    尽量不要拼接字符串!

    假设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好恶心。

    三、事件

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

    如:不要在 $(document).ready() 中初始化所有乱七八糟的方法,很难找的……

    对于新添加的元素,添加点击(或其他)事件,可以使用

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

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

    四、动效

    作为前端,不要光想着js,好歹也学学 animate.css

    PC端使用动效是没问题的,但移动端网页,如slideUp、animate之类,最好用css样式代替,不然会有卡顿效果。

    ……移动端为什么还用jquery?jquery 压缩版一般在80~90 kb,对如今的网络是可以接受的,当然最好用 zepto.js 代替。

    请在完成任务之后再考虑优化……

    五、No JQuery

    不要把不熟悉的东西带到工作中,除非没有更好的替代方案

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

    杂项

    如果有空,记得重构代码~

    本来想写点具有实用性的东西,但Jquery的特性网上已经有很多了,因此不再赘述,能给新人一点提示就行。

  • 相关阅读:
    七大排序的个人总结2
    如何创建自定义的文件类型关联
    ajax原理,验证码生成原理
    读取同一文件夹下多个txt文件中的特定内容并做统计
    为已定图片加水印
    egrep -v "^#|^$"
    QSplashScreen无法背景透明的解决办法(强制StyleSheet生效)
    c++调用python
    Qt对话框_模态/非模态
    雷军:曾日写300个高质量帖 做互联网需7字诀
  • 原文地址:https://www.cnblogs.com/10manongit/p/12214250.html
Copyright © 2020-2023  润新知