jQuery回调对象

jQuery向开发者提供了外部接口调用,但是$.Callbacks()模块的开发目的是为了给内部$.ajax() 和 $.Deferred()模块提供统一的基本功能组件。它可以用来作为类似基础定义的新组件的功能。

jQuery.Callbacks是jquery在1.7版本之后加入的,是从1.6版中的_Deferred对象中抽离的,主要用来进行函数队列的add、remove、fire、lock等操作,并提供once、memory、unique、stopOnFalse四个option进行一些特殊的控制。

这个函数常见的应用场景是事件触发机制,也就是设计模式中的观察者模式的发布、订阅机制,目前Callbacks对象用于queue、ajax、Deferred对象中。
 

Ajax模块

  1. ajax: function(url, options) { 
  2.   //省略代码 
  3.   deferred = jQuery.Deferred(), 
  4.   completeDeferred = jQuery.Callbacks("once memory") 
  5.     .............. 

不难发现jQuery.Callbacks还提供“once memory”等参数用来处理:

     once: 确保这个回调列表只执行( .fire() )一次(像一个递延 Deferred)。

     memory: 保持以前的值,将添加到这个列表的后面的最新的值立即执行调用任何回调 (像一个递延 Deferred)。

     unique: 确保一次只能添加一个回调(所以在列表中没有重复的回调)。

     stopOnFalse: 当一个回调返回false 时中断调用。

  1. var callbacks = $.Callbacks('once'); 
  2.  
  3. callbacks.add(function() { 
  4.   alert('a'); 
  5. }) 
  6.  
  7. callbacks.add(function() { 
  8.   alert('b'); 
  9. }) 
  10.  
  11. callbacks.fire(); //输出结果: 'a' 'b' 
  12. callbacks.fire(); //未执行 

once的作用是使callback队列只执行一次。
 

时间: 2024-09-13 04:22:14

jQuery回调对象的相关文章

jquery分页对象使用示例

 这篇文章主要介绍了jquery分页对象使用示例,需要的朋友可以参考下 使用方法和相关参数如下:  displayId//默认值显示区域Id为pageBox,可以不填  pagesize//每页条数,默认是15条,可以不填  totalsize//总条数  curpage//当前页数  simple//默认是false,true没有上一页和下一页,  type//0默认走http跳转,1是jsp页面必须有pageCallBack(pageNum)函数,从1开始  url//链接地址,如果type

jQuery遍历对象、数组、集合实例_jquery

1.jquery 遍历对象 复制代码 代码如下:   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  <HTML>   <HEAD>    <TITLE> New Document </TITLE>    <script language="javascript" type="text/javascript&qu

浅谈jQuery异步对象(XMLHttpRequest)_javascript技巧

我们先来看看异步对象五部曲 这是post请求的. 复制代码 代码如下:  //1.00创建异步对象             var xhr = new XMLHttpRequest();             //2.0             xhr.open("post", url,params, true);             //3.0将参数使用Formdata属性传递             xhr.setRequestHeader("Content-Typ

jQuery.browser对象查看浏览器相关信息的的示例

文章简介:jQuery检测浏览器名称和版本信息. 在jQuery中,可以通过访问$.browser对象的属性来获取浏览器的相关信息.$.browser对象即jQuery.browser对象,用于处理与浏览器相关的事务,该对象的属性如下: 属性名称 说明 webkit 如果是webkit相关的浏览器,则为true,否则为false mozilla 如果是mozilla相关的浏览器,则为true,否则为false safari 如果是safari浏览器,则为true,否则为false opera 如

使用jQuery在对象中缓存选择器的简单方法

  这篇文章主要介绍了使用jQuery在对象中缓存选择器的简单方法,jQuery是最知名的JavaScript库,需要的朋友可以参考下 当使用像jQuery这样的库时,开发者通常会使用选择器来访问和操作DOM中的元素.当一个选择在页面上被反复的访问时,把它缓存起来以获得更好的性能是个不错的想法. 让我们看一个例子, ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 jQuery(document).ready(function() { jQuery('

jQuery获取对象简单实现方法小结_jquery

监控一个容器,当用户点击时弹出 代码如下 $(function(){ $("Element").click{function(){ alert("点击我哦!"); } } }); 基本对象获取(注意这里获取的都是Jquery对象而不是Dom对象哦,但是他俩是可以转换滴) 代码如下 复制代码 代码如下: $("*") '表示获取所有对象 但是我至今没这样用过 $("#XXX") '获得 id=XXX 的元素对象(id可以是标签的

jQuery回调函数的定义及用法实例_jquery

本文实例讲述了jQuery回调函数的定义及用法.分享给大家供大家参考.具体分析如下: jQuery代码中对回调函数有着广泛的应用,对其有精准的理解是非常有必要的,下面就通过实例对此方法进行简单的介绍. 代码实例如下: 利用回调函数,当div全部隐藏之后弹出一个提示框. 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="a

js-ie下使用jQuery获取对象并设置值出错,火狐下正常

问题描述 ie下使用jQuery获取对象并设置值出错,火狐下正常 调试时控制台不断输出错误信息: 获取的是input,input是在js中动态添加上的,鼠标移上去就会显示出来 为input绑定了一个"change"事件,但是在事件处理中,在ie下用属性选择器不能获取到对象并报错 求解??? ie9+jquery1.7 解决方案 你的IE是哪个版本的,可以使用高版本试下,如果高版本可以,表示你当前版本不支持这个功能 解决方案二: 换jquery1.9左右的版本试试,jquery2.0版本

jquery判断对象是否为空并遍历对象的简单实例_jquery

javascript : if(document.getElementById("target_obj_id")){ } else { } jquery: 因为 $("#target_obj_id") 不管对象是否存在都会返回 object ,所以以上方法不行 1. var target_obj = jQuery('#target_obj_id'); if (target_obj.length > 0) { //如果大于0 标识 id 为target_obj_