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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-01-06 11:54  华家宝贝冬冬  阅读(177)  评论(0编辑  收藏  举报