• Jquery使用规范(一)


    经过长时间的积累,整理了一堆以帮助更多的人~

    jQuery的加载

    1、我们经常用CDN来加载网页,我之前的文章中也多次提及,点击查看使用CDN的好处,

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="js/jquery-2.1.1.min.js" type="text/javascript"></script>')</script>

    2、最好在本地备份一个相同版本的代码,以防万一,不能链接远程服务。

    3、使用裸协议的URL(去掉http:或者https:),如上面代码展示的那样,我在之前的文章中也提到过,加载CDN可以省掉http

    4、如果可能,尽量将你的JavaScript和jQuery代码放到页面底部。

    5.该使用哪个版本?

    如果你想兼容IE678请不要用2.x的版本

    针对极少数不用考虑兼容性问题的,极力推荐使用最新版本的jQuery

    当从CDN服务器加载jQuery时,最好把版本写全(比如1.11.0而不是1.11或者直接写个1)

    不要重复加载和多次加载

    不要从jquery CDN中加载 jquery-latest.js 

    6、如果你同时还使用了其他JS框架诸如Prototype, MooTools, Zepto等等,这些框架中,有的也用了$符号,所以你就不要再用$来进行jQuery 编码了,而请用'jQuery'代替。并且调用$.noConflict()保证不会有冲突出现。

     

    关于变量

    1、jQuery类型的变量最好加个$前缀。

    2、时常将jQuery选择器返回的内容存进变量以便重用

    var $myDiv = $("#myDiv");
    $myDiv.click(function(){...});

    3、使用 camel case命名

    4.指定选择的上下文。 

    // 劣质的代码:因为需要遍历整个DOM来找到.class
    $('.class');
    
    // 高品代码:因为只需在指定容器范围内进行查找
    $('.class', '#class-container');

    5. 避免使用万能选择器。

    $('div.container > *'); //
    $('div.container').children(); //

    6.警惕隐式的万能选择器。省略的情况下其实使用的就是*号通配符。

    $('div.someclass :radio'); //
    $('div.someclass input:radio'); //

    7. ID已经表示唯一了,背后使用的是document.getElementById(),所以不要和其他选择器混淆了。 

    $('#outer #inner'); //
    $('div#inner'); //
    $('.outer-container #inner'); //
    $('#inner'); // 干净利落,后台只需调用document.getElementById()

    DOM操作

    1.操作任何元素前先将其从文档卸载,然后再贴回去。

    var $myList = $("#list-container > ul").detach();
    //...a lot of complicated things on $myList
    $myList.appendTo("#list-container");

    2.不要用匿名函数来做事件的回调。匿名函数不易调试维护测试和复用。或许你想较真,看看这里吧

    $("#myLink").on("click", function(){...}); // 不要这样
    
    
    // 这样
    function myLinkClickHandler(){...}
    $("#myLink").on("click", myLinkClickHandler);

    3.处理文档ready事件的回调也表用匿名函数,匿名函数不易调试维护测试和复用

    $(function(){ ... }); // 糟糕的做法:无法利用此函数也无法为其写测试用例
    
    // 好的做法
    $(initPage); // 抑或 $(document).ready(initPage);
    function initPage(){
        // 这里你可以进行程序的初始化了
    }

    4.进一步,最好也将ready事件的处理程序放到外部文件中引入到页面,而页面中内嵌的代码只需调用即可。

    <script src="my-document-ready.js"></script>
    <script>
        // 初始化一些必要的全局变量
        $(document).ready(initPage); // 抑或 $(initPage);
    </script>

    5.千万不要写内联到HTML的JS代码,这是调试的噩梦!应该总是用jQuery来绑定事件自带程序,这样也方便随时动态地取消绑定。

    <a id="myLink" href="#" onclick="myEventHandler();">my link</a> <!--不好 -->
    $("#myLink").on("click", myEventHandler); // GOOD
    $("#parent-container").on("click", "a", delegatedClickHandlerForAjax);

    6.使用Promise模式

    $.ajax({ ... }).then(successHandler, failureHandler);
    
    
    // 抑或
    var jqxhr = $.ajax({ ... });
    jqxhr.done(successHandler);
    jqxhr.fail(failureHandler);

    7.标准的Ajax模板如下,查看官方案例

    var jqxhr = $.ajax({
        url: url,
        type: "GET", // 默认为GET,你可以根据需要更改
        cache: true, // 默认为true,但对于script,jsonp类型为false,可以自行设置
        data: {}, // 将请求参数放这里.
        dataType: "json", // 指定想要的数据类型
        jsonp: "callback", // 指定回调处理JSONP类型的请求
        statusCode: { // 如果你想处理各状态的错误的话
            404: handler404,
            500: handler500
        }
    });
    jqxhr.done(successHandler);
    jqxhr.fail(failureHandler);

     

     

     

     

     

     

     

     

  • 相关阅读:
    jdk源码阅读笔记之java集合框架(四)(LinkedList)
    jdk源码阅读笔记之java集合框架(二)(ArrayList)
    jdk源码阅读笔记之java集合框架(三)(modCount)
    java文件拷贝的一点思考
    mac(10.11.5 )安装pt-query-digest所遇问题总结
    关于springboot启动所需所有jar包详解
    volatile的一点理解
    java 虚拟机自动内存管理
    虚拟机运行时数据区划分
    笔记本连上wifi(WiFi完全没问题)却无法上网
  • 原文地址:https://www.cnblogs.com/guess/p/8213740.html
Copyright © 2020-2023  润新知