jQuery代码规范:http://bbs.html5cn.org/thread-86001-1-1.html
jQuery教程学习网:http://jqfundamentals.com/chapter/jquery-basics
jQuery学习网站:http://learn.jquery.com/
jQuery性能改善:http://bbs.html5cn.org/thread-84143-1-1.html
jQuery50个必备代码段:http://jingyan.baidu.com/article/d5a880eb4f0c5d13f147cc2e.html
可以直接拿来用的jQuery代码片段:http://www.html5cn.org/article-5355-1.html http://bbs.html5cn.org/thread-85030-1-1.html
jQuery中鲜为人知的几个方法:http://bbs.html5cn.org/thread-83804-1-1.html
jQuery最佳实践性能优化:http://www.ruanyifeng.com/blog/2011/08/jquery_best_practices.html
jQuery各种操作表单元素方法:http://bbs.html5cn.org/thread-85045-1-1.html
使用向jQuery的时候,尽量使用原生的CSS3选择器。可能会让你的代码跑的很快。这样选择器引擎就可以使用浏览器原生解析器,而不是选择器自己的。
jQuery新技术详解:
Deferred对象:http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html
HTML5 FormData对象:http://www.ruanyifeng.com/blog/2012/09/xmlhttprequest_level_2.html
你不再需要jQuery,用原生可替代:https://github.com/oneuijs/You-Dont-Need-jQuery/blob/master/README.zh-CN.md
http://youmightnotneedjquery.com/
选择器性能自上而下一次下降:id选择器$("#id")/$("#cont").find("div")→标签选择器$("div")/$("input")→类选择器$(".class")→属性选择器$("[attribute=value]")→伪选择器$(":hidden") 1.addClass()只是设置样式而已,attr()可以设置更多的属性,当然包括class。attr()是设置属性,原有的属性会被替换。addClass()方法向被选元素添加一个或多个类,该方法不会移除已存在的class属性,仅仅添加一个或多个class属性。 2.不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。对应mouseout 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。对应mouseleave 这样的话,mouseenter子元素不会反复触发事件,否则在IE中经常有闪烁情况发生。 3.每次调用$(function(){})方法都会在现有的行为上追加新的行为,这些行为函数会根据注册的顺序依次执行。 4.如果CDN加载失败时,我们需要加载自己本地的jQuery文件,只需要在头部加上下面的代码就可以: (1) <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" ></script> (2) <script >window.jQuery || document.write('< script src="js/jquery-1.11.1.min.js" type="text/javascript"></script')</script> 5.$.each()用法:http://www.cnblogs.com/mabelstyle/archive/2013/02/19/2917260.html $.map()用法:http://www.css88.com/jqapi-1.9/jQuery.map/ $.grep()用法:此函数至少传递两个参数:待过滤数组和过滤函数。过滤函数必须返回 true 以保留元素或 false 以删除元素。 $.each()和$.map()的区别是:each返回的是原来的数组,并不会新创建一个数组。而map方法会返回一个新的数组。如果在没有必要的情况下使用map,则有可能造成内存浪费。each迭代数组时,可以通过访问this关键字得到,而map,在函数内部,this指的是window对象。 6.预加载图片 这个图片预加载片段让你能够快速的预先载入图片,不需要等待。代码如下: jQuery.preloadImagesInWebPage = function() { for(var ctr = 0; ctr< argument s.length; ctr++){ jQuery("").attr("src", argument s[ctr]); } } 调用方法: $.preloadImages("image1.gif", "image2.gif", "image3.gif"); 判断图片是否已加载: $('#imageObject').attr('src', 'image1.gif').load(function() { alert('The image has been loaded…'); }); 7.在jQuery里,可以使用mouseenter和mouseleave事件来避免事件冒泡的副作用。 8.js和jq左偏移量的区别和共同点(上偏移量同理): 相同数值(都指的是元素的left样式,而且都带单位px): $("#id").css("left"); documentElementById("id").style.left;//获取行间样式 getComputedStyle(documentElementById("id"),null).left;//chrome,FF documentElementById("id").getCurrentStyle.left;//IE 不同数值(都不带单位px): $("#id").offset().left //相对于当前文档的左偏移量,此方法只对可见元素有效。 $("#id").position().left //返回匹配元素相对于父元素的位置(偏移) documentElementById("id").offsetLeft //相对于父对象的左边距,包括左外、内边距 9.$(this)和this的区别:$(this)指的是jQuery对象,使用它只能调用jQuery的方法和属性,而this指的是HTML对象,并且js DOM对象$(this)[0]等价于this,两者都可以调用原生js方法和属性。(1)var $cr = $("#cr"); ar cr = $cr[0] //jQuery对象转换为DOM对象;(2)var cr = document.getElementById("cr"); var $cr = $(cr);//DOM对象转换为jQuery对象。 10.具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()。 11.jQuery实现水平和垂直居中(窗口大小改变也适用): $(window).resize(function(){ $(".mydiv").css({ position: "absolute", left: ($(window).width() - $(".mydiv").outerWidth())/2, top: ($(window).height() - $(".mydiv").outerHeight())/2 }); }); 此外在页面载入时,就需要调用resize()。 $(function(){ $(window).resize(); }); 12.<input type="text" id="results"> var content = $('#results').val(); if($.trim(content) === "") { alert('空'); } 如果写成if(content.trim() === "")在IE下则会报错。一般用$.trim(this.value).length < 1来判断是否为空 13.jQuery实现下拉提示及自动填充邮箱:http://bbs.html5cn.org/thread-84263-1-1.html 14.innerWidth():内宽度包括元素的内边距(padding),但不包括外边距(margin)、边框(border)等部分的高度。 outerWidth():外宽度默认包括元素的内边距(padding)、边框(border),但不包括外边距(margin)部分的宽度。你也可以指定参数为true,以包括外边距(margin)部分的宽度。 15.不要操作空缺对象,更多信息。 // BAD: $("#nosuchthing").slideUp(); // GOOD:var $mySelection = $("#nosuchthing"); if ($mySelection.length) { $mySelection.slideUp(); } 16.写一个能够进行方法链式调用的自定义jQuery函数也很容易。你所做的就是要写个能修改元素并返回元素的函数。代码如下(可重复利用的函数或方法): $.fn.makeRed = function() { return $(this).css('background', 'red'); } $('#myTable').find('.firstColumn').makeRed().append('hello'); 17.jQuery(function($) { // 你可以在这里继续使用$作为别名 }); 18.创建一个 <input> 元素必须同时设定 type 属性。因为微软规定 <input> 元素的 type 只能写一次。 jQuery 代码: // 在 IE 中无效: $("<input>").attr("type", "checkbox");//IE不允许修改input元素的type或name特性 // 在 IE 中有效: $("<input type ='checkbox'>"); 19.add()方法可以将多个选择器链接起来,创建满足任何一个选择器的元素组合。而且它不会扩充原始的包装集,而是创建一个新的包装集来保存结果。 20.$("img").index($("img#box")[0]); //获取id为box的图片在所有图片集合中的下标,这种方法比$("img#box")的下标要准确。因为前者返回的是javascript数组,序号始终相对应,而后者则会根据同级位置发生变化。 21.(function($){...})(jQuery)是一个“立即执行的匿名函数”,构成了一个闭包,可以防止命名冲突。在匿名函数内部,$参数引用jQuery对象。这个匿名函数不会等到DOM就绪就会执行。注意,使用on方法做事件委托时,脚本必须是在页面的head元素中链接和(或)执行的,即$(document).on("click","#id",function(){...})。之所以选择这个时机,因为这时候刚好document元素可用,而整个DOM还远未生成;如果把脚本放在结束的body标签前面,就没有意义了,因为那时候DOM已经完全可用了。 22.用滚动加载动态页面的内容: var loading = false; $(window).scroll(function(){ if((($(window).scrollTop()+$(window).height())+250)>=$(document).height()){ if(loading == false){ loading = true; $('#loadingbar').css("display","block"); $.get("load.php?start="+$('#loaded_max').val(), function(loaded){ $('body').append(loaded); $('#loaded_max').val(parseInt($('#loaded_max').val())+50); $('#loadingbar').css("display","none"); loading = false; }); } } }); $(document).ready(function() { $('#loaded_max').val(50); });