经过长时间的积累,整理了一堆以帮助更多的人~
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);
Jquery使用规范(一)
原文地址:https://www.cnblogs.com/guess/p/8213740.html