这个1.5版本最大的更新是AJAX的完全重写,提供了更强的可扩展性。但是受制于精力和篇幅,对新的AJAX的分析还是放到下回,本篇先简单介绍一下细节方面的改进。 jQuery._Deferred和jQuery.Deferred 首先不得不说这两个新生事物,因为他们是作为基础设施存在,不把这两个东西讲明白了,有些问题根本没办法解释。 首先,jQuery.Deferred是jQuery._Deferred的增强版,因此对于这个问题,从jQuery._Deferred入手,就能说明一大半的问题。...
前言 懒加载技术(简称lazyload)并不是新技术,它是js程序员对网页性能优化的一种方案。lazyload的核心是按需加载。在大型网站中都有lazyload的身影,例如谷歌的图片搜索页,迅雷首页,淘宝网,QQ空间等。因此掌握lazyload技术是个不错的选择,可惜jquery插件lazy load官网(http://www.appelsiini.net/projects/lazyload)称不支持新版浏览器。 lazyload在什么场合中应用比较合适? 涉及到图片,falsh资源,iframe,网页编辑器(类似F...
由于浏览器是单线程的,因此脚本在载的时候会阻塞下载其它资源;虽然在现在浏览器已经有所改善,但仍然有待改进。 很显然,脚本必须按顺序执行,但没有必要按顺序下载,解决方法: 1。内嵌JS 通常由于页面大小和缓存能带来更多好处,因此外部文件引入JS更好一些; 在少数情况下,比如首页、少量JS情况下尚可接受。 2。XHR Eval 通过XMLHttpRequest从服务器端获取脚本。 主要缺陷是,通过XHR获取的脚本必须部署在和主页面相同的域中...
首先看看英文解释吧: children方法:find方法:通过以上的解释,可以总结如下: 1:children及find方法都用是用来获得element的子elements的,两者都不会返回 text node,就像大多数的jQuery方法一样。 2:children方法获得的仅仅是元素一下级的子元素,即:immediate children。 3:find方法获得所有下级元素,即:descendants of these elements in the DOM tree 4:children方法的参数selector 是可选的(optionally),用来过...
查看下之前写的代码,有许多这样的代码: 代码如下: $(function(){ //do something. }); 这里面可能写一些初始化样式、给其他dom元素附加事件处理等。刚开始没发现什么问题,但是在页面引用了一些下载缓慢的图片时,问题出现了:在页面html下载完,到所有资源全部下载完之间,绑定dom元素上绑定的事件无法执行、用脚本绑定的样式无效等混乱情况,也就是ready么有执行。 Ok,我的情况比较特殊,可能这个情况对于大部分同学是不可能...
我们先来简单回顾下HTML源代码(test2.htm): 代码如下: $(function(){ $('#container').html('' + 'alert(typeof(jQuery.ui));'); }); 2.调试,单步跟进 逐行分析jQuery源代码是一件相当枯燥的事情。我这里会以test2.htm为目标,调试进入jQuery源代码。 1) 首先在html: 打一个断点,刷新页面 这里的value是字符串:"alert(typeof(jQuery.ui));" 我们来看会进入那个条件分支:首先看看rnocache是啥? 可见value中含...
代码如下: var a = parseInt("09"), b = Number("09"); 很多人会认为a和b的值都是数字9,但实际上不是。 parseInt的主要作用是把字符串转换为整数,或者把小数转换为整数。一般情况下,我们只用到它的第一个参数。但实际上,它有两个参数: parseInt(string, radix) parseInt会根据radix指定的进制进行转换,比如: 代码如下: alert(parseInt("10", 2)); // outputs 2 在没有指定radix或者radix为0的情况下,parseInt会按十进制...
从原理就可以知道,unshift的效率是较低的。原因是,它每添加一个元素,都要把现有元素往下移一个位置。但到底效率差异有多大呢?下面来测试一下。 测试环境的主要硬件:CPU T7100(1.8G);内存4G DDR2 667;硬盘5400转。主要软件:操作系统为Windows 7;浏览器为Firefox 3.6.9。测试代码: 代码如下: var arr = [ ], s = +new Date; // push性能测试 for (var i = 0; i < 50000; i++) { arr.push(i); } console.log(+new Da...
jQuery脚本总体结构来说,有如下形式: 代码如下: (function( window, undefined ) { // Define a local copy of jQueryvar jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor enhanced return new jQuery.fn.init( selector, context ); }, // Expose jQuery to the global objectwindow.jQuery = window.$ = jQuery; })(window); 对这样的结构不很理解,也没做深究,只知...
淘宝的搜索框就用到了这样一种设计:这种设计一般是用javascript监控了输入框的focus和blur事件: 代码如下: //$("#q").onfocus = function() { if ("请输入关键字" == this.value) { this.value = ""; } }; $("#q").onblur = function() { if ("" == this.value) { this.value = "请输入关键字"; } }; //]]> 这段代码有两个很明显的缺点:“请输入关键字”这段提示共出现了3次,一旦要改这段文...
1, 参数是一个对象,核心js对象(native ECMAScript object)或宿主对象(host object),那么将直接返回该对象。 其生成的对象构造器仍然是所传参数对象的构造器。这样造成的后果是虽然该对象是new Object,但其constructor不一定是Object。 代码如下:function Person(){this.name=jack;} var w = new Object(window), d = new Object(document), p = new Object(new Person()); console.log(w.constructor); //-> Window console.lo...
不过请仔细对比一下,你会发现其中差别还是很大的。Java HashMap的key是Object类型,所以可以任何类型的参数,而JS的key只能是字符串或是数字。 你也许会说,obj={};map[obj]=1;这段代码传入了既不是数字也不是字符的key,但也没发生错误啊。那是因为解释器将obj对象通过内置的toString方法转换成“[object Object]”这段字符了,你可以用for each下map看看。而java之所以能够接受任何类型的key,是因为其Object实现了HashCode方法...
它们之间有区别吗? 开发过程中似乎很少有人去加个额外的window,觉得多此一举。比如Ajax过程中回调函数解析JSON格式字符串 代码如下: ... function callback(str){ var json = eval(( + str + )); } ... 通常直接使用eval,而非var json = window.eval('(' + str + ')'); 又比如调试时使用alert,很少有人使用window.alert;IE中获取事件对象使用event,很少有人使用window.event。(Firefox中在某些情况下也支持event而不支持w...
js报错: Object doesn't support this property or method 问题原因: 1:js代码用了javascript关键字 2:方法名和表单或者div form名冲突 3.button中有name="submit" 4.上传图片时提示:Object doesn't support this property or method 原因:服务器上安装的AspJpeg的版本低于1.4版。 解决方法:安装1.4或以上版本的AspJpeg组件。 我也遇到这个问题,之后发现: 代码如下: function TfybxMoneyTotalCheck() { ........ var Tf...
其短小精悍,使用简单方便,性能高效,能极大地提高开发效率,是开发Web应用的最佳的辅助工具之一。因此大部分开发者在抛弃Prototype而选择jQuery来进行Web开发。 一些开发人员在使用jQuery时,由于仅仅只知道jQuery文档中的使用方法,不明白jQuery的运行原理,时常会碰到许多的问题。这些问题大部分是使用不当而产生,极少数是jQuery的Bug。如果不明白其运行机理和核心源码,我们也很难写出基于jQuery类库的高性能的程序出来。 在...