分类目录归档:jquery

jQuery.Deferred对象

一、什么是deferred对象?

开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。
通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。
但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,jQuery开发团队就设计了deferred对象。

1、生成Deferred对象

2、deferred对象状态 以及 改变状态

  • pending: 表示还没有完成
  • resolved: 表示操作成功
  • rejected: 表示操作失败

可以通过state方法来获取状态

3、绑定回调方法

resolve方法对应着done方法,reject方法对于着fail方法。

4、then方法

then方法的作用也是设置回调方法。他可以接受三个参数。按顺序为 done, fail, progress 这3个方法。
自jQuery1.8后,then方法有一个返回值就是promise对象。而done()返回的是原有的deferred对象。如果then()指定的回调函数有返回值,该返回值会作为参数,传入后面的回调函数。

5、pipe方法

大致的作用是将resolve、reject、notify传入的参数再做一下处理。

6、promise对象

简单说,promise对象就是不能改变状态的deferred对象,也就是deferred的只读版。或者更通俗地理解成,promise是一个对将要完成的任务的承诺,排除了其他人破坏这个承诺的可能性,只能等待承诺方给出结果。

你可以通过promise对象,为原始的deferred对象添加回调函数,查询它的状态,但是无法改变它的状态,也就是说promise对象不允许你调用resolve和reject方法。

7、$.when方法

$.when()接受多个deferred对象作为参数,当它们全部运行成功后,才调用resolved状态的回调函数,但只要其中有一个失败,就调用rejected状态的回调函数。它相当于将多个非同步操作,合并成一个。实质上,when方法为多个deferred对象,返回一个单一的promise对象。

参考链接:
http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html
http://www.web-tinker.com/article/20154.html
http://javascript.ruanyifeng.com/jquery/deferred.html

三级(多级)联动自动赋值

测试连接

参考:

http://api.jquery.com/jQuery.ajax/

http://api.jquery.com/jQuery.Deferred/

总结项目,重新封装uploadify插件,省去大量重复代码!

 

 

模仿bootstrap开发基于jquery的插件

春节期间闲来无事,想学习一下如何开发基于jquery的插件。所以网上查了些资料,然后模仿bootstrap写了一个没什么用的插件。废话不多说,上代码。

有些代码虽然知道是干嘛的,但是无法用语言准确的表达出来,以后还会不断的更新。

一、自执行匿名函数

参考:自执行函数

二、’use strict’

使用严格模式,一直以来,Javascript 松散灵活的语法饱受争议。 于是,ECMAScript 5.0 定义中引入了strict mode,使Javascript解释器可以用”严格”的语法来解析代码,以帮助开发人员发现错误。IE 10 开始支持strict mode。

如果你使用了 use strict,但是浏览器不支持怎么办?

没关系,浏览器会自动忽略。

参考: http://qianduan-notes.diandian.com/post/2012-06-02/40027620460

 三、构造函数与原型

参考:$.extend构造函数与原型

 四、与jQuery挂钩

$.fn可以简单的理解为jQuery的原型

jQuery源码第119行

参考:链式调用原型链$.data

五、为符合规则的标签添加事件

参考:$.on$.off

以上大致初步的一个简单插件完成。

测试连接