首页 > 教程 > 关键词  > 自定义最新资讯  > 正文

javascript自定义事件管理

2011-03-23 09:55 · 稿源:Plane Art,www.planeart.cn/

在模块化的应用程序开发中,大多数情况一个模块使用一个回调函数就够了,如果遇到需要多回调函数的情况,如一个使用了插件机制的web相册系统。

A是核心模块,负责本地缓存与远程数据加载、分页、切换照片、历史记录管理等操作,插件B、C、D、…数目与结构并不确定,此时如何在A执行插件的回调函数呢?我们可以自定义事件的方式来绑定并执行多个回调函数,类似addEventListener (DOM)、attachEvent (IE)方式,在A执行关键操作的时候总是触发一个固定名称自定义事件,而外部插件任意可以向其绑定回调函数,实现代码:

/**
 * 回调函数机制
 * 支持多个回调函数绑定
 * @author		tangbin
 * @see			https://www.planeart.cn/?p=1182
 * @namespace
 */
var callback = (function () {
	var that = this,
		cache = {},
		fName = '${callback}',
		fVal = 1;

	/**
	 * @scope callback
	 */
	return {
		/**
		 * 绑定回调函数
		 * @example var loadEndFn = function (photoId, photoIndex) {
		 * 	// [code..]
		 * };
		 * callback.bind('getData', loadEndFn);
		 * @param	{String}	名称
		 * @param	{Function}	要绑定的回调函数
		 */
		bind: function (name, callback) {
			!cache[name] && (cache[name] = {});
			!callback[fName] && (callback[fName] = fVal ++);
			cache[name][callback[fName]] = callback;
		},

		/**
		 * 移除回调函数
		 * @example var loadEndFn = function (photoId, photoIndex) {
		 * 	// [code..]
		 * };
		 * callback.unbind('getData', loadEndFn);
		 * @param	{String}	名称
		 * @param	{Function}	要卸载的回调函数
		 */
		unbind: function(name, callback) {
			callback === undefined ?
			delete cache[name] :
			callback[fName] && (delete cache[name][callback[fName]]);
		},

		/**
		 * 触发回调函数
		 * @example var photoId = 34356, photoIndex = 0;
		 * callback.trigger('getData', [photoId, photoIndex]);
		 * @param	{String}	名称
		 * @param	{Array}		(可选)传递给事件处理函数的附加参数
		 */
		trigger: function (name, data) {
			var i, ret, callbacks = cache[name];
			if (callbacks) for (i in callbacks) ret = callbacks[i].apply(that, data);
			return ret;
		}

	};

})();

当然,也可以猥琐的为“on”类型的事件提供多回调函数绑定(有些javascript框架的事件机制就基于此来解决跨浏览器兼容),演示

举报

  • 相关推荐
  • 沃莱科技P7 Max 智能八电极|突破健康管理价值边界,重新定义“体脂秤”

    沃莱科技推出全新P7Max极光彩屏智能八电极体脂秤,颠覆传统体脂测量方式。产品采用极光趋势彩屏设计,创新可视化手柄,八电极高低双频测量技术,实现全身精准扫描。内置DEXA实验室校准算法,测量精度达0.985以上。配备4.8英寸高清VA屏手柄,支持语音交互和7国语言,无需弯腰即可查看数据。结合Fitdays App提供58项身体成分分析报告和个性化健康方案,打造"测量+管理+指导"全链路健康管理生态。产品荣获国际红点设计大奖,通过技术创新重新定义智能体脂秤的健康价值边界。

  • AI日报:百度发布“绘想”平台与MuseSteamer;阿里音频驱动全身数字人模型OmniAvatar

    【AI日报】今日AI领域重要动态:1.开源语音大模型Step-Audio-AQAA发布,实现音频到语音的端到端自然转换;2.百度推出"绘想"平台与MuseSteamer,通过AI一键生成专业级视频;3.浙大与阿里联合发布OmniAvatar,音频驱动数字人技术取得突破;4.百度搜索迎十年来最大改版,新增智能框、百看和AI助手功能;5.xAI开发者控制台新增Grok4及Grok4Code引用,预示新一代AI模型即将发布;6.Gemin

  • ChatGPT们重塑了对话框,钉钉今天要重塑表格

    ​自从1979年,丹·布里克林(Dan Bricklin)和鲍勃·弗兰克斯顿(Bob Frankston)在苹果当时划时代的 Apple II 电脑上做出了第一张可以自动计算和更新的电子表格 VisiCalc 后,表格就成为了计算机用数据方式理解人类世界的基座。不过,在更多的时候,没人这样讨论它。横横竖竖几个格子,表格无处不在,它看起来太普通了。 然而计算机诸多繁荣的根基,都建立在一张张表格之上,无�

  • 君乐宝威县一牧通过TPM优秀奖初审 牧业精益管理实现里程碑式突破

    君乐宝乳业集团威县第一牧场凭借系统性精益管理实践和显著提质增效成果,7月4日成功通过TPM(全面生产维护)优秀奖初审。作为君乐宝首家全面导入TPM管理体系的标杆牧场,该牧场构建了覆盖奶牛养殖、饲草管理、设备运维等全流程的精益管理体系,实现奶牛健康数据、产奶量等关键指标的实时监测,达到国际先进水平。评审专家对牧场TPM推进的系统性和创新性给予高度肯定,认为其为中国乳业树立了全产业链一体化管理创新典范。君乐宝将持续优化管理体系,对标国际打造世界级牧场。

  • 坦途NAVEE爆款 ST3 Pro:3699元抢百万豪车级减震神坐骑!颠簸过滤,舒适拉满!

    坦途NAVEE电动滑板车ST3Pro凭借汽车级配置成为中高端市场标杆。搭载1350W峰值功率电机,最高时速40km/h,28%爬坡能力;48V/596Wh汽车级电池通过德国莱茵认证,续航75km。采用四重悬架系统、10英寸自修复真空胎,配备三重刹车系统+智能TCS防滑系统。支持智能APP实现离线定位、蓝牙感应锁等功能。促销价仅3699元,赠送密码锁等福利。该产品重新定义了通勤工具标准,兼顾澎湃动力与舒适安全,成为3000元档电动滑板车的不二之选。

  • 兼顾睡眠与锻炼 三星Galaxy Watch8系列定义舒适佩戴新体验

    三星电子于2025年7月9日发布Galaxy Watch8系列智能手表,包含标准版和Classic版。新品采用"天圆地方"设计语言,配备3nm处理器、3000尼特峰值亮度屏幕和升级版BioActive传感器,支持睡眠监测、血管负荷检测等健康功能。Watch8系列搭载Wear OS6系统,提供44mm/40mm两种尺寸,售价2299元起;Classic版配备旋转表圈,售价3499元起。同步推出的Galaxy Ring智能戒指支持7天续航,售价待定。产品将于7月25日正式发售,预购可获赠表带等优惠。

  • 绿舟荣膺亚马逊SPN首批CPF服务商,定义跨境电商碳合规服务新标杆!

    亚马逊SPN是官方认证的第三方服务商平台,为卖家推荐经过严格审核、具备专业能力和合规信誉的服务商。绿舟荣膺亚马逊SPN首批CPF服务商,其服务特点包括:公司资质稳定、团队专业经验丰富、无违规记录、客户评价良好、服务体系完善。绿舟碳合规服务由商务、项目、交付三大团队协作完成,覆盖认证前方案讲解、认证中报价答疑、认证后测量计算全流程。目前绿舟已服务超70%跨境百强企业,涵盖3C、家电、服装等多个品类。

  • 齐鲁起“智”风!销售易AI CRM首秀青岛,助力企业“用上AI、用好AI”

    6月10日,腾讯云城市峰会在青岛举行,腾讯旗下销售易携中国首款AI+CRM产品NeoAgent亮相。该产品基于腾讯混元大模型和DeepSeek开源模型打造,针对制造业产品复杂、销售周期长等特点,助力企业实现从获客到服务的全周期智能化升级。销售易已在山东获得多家龙头企业支持,其AI+CRM解决方案通过实际应用验证,能有效提升企业运营效率和客户体验。未来,销售易将继续深化与腾讯合作,推动AI技术在CRM领域的创新应用,加速行业数字化转型进程。(140字)

  • 40+沪上头部企业走进腾讯,与米其林等共话CRM国产替代新实践

    销售易主办的"Neo企数字营"活动在上海腾讯总部成功举办,聚焦跨国企业如何实现健康增长及本土化运营下的数据合规等议题。活动汇聚40多家世界500强企业,米其林等企业代表分享了与销售易合作的成功经验。销售易CEO史彦泽指出,国产CRM软件已具备替代国际厂商的技术能力,能帮助企业解决数据合规、构建全渠道数字化销售体系等痛点。凭借深耕行业的业务理解和全栈合规安全保障,销售易已助力施耐德电气等众多500强企业完成CRM国产化替代。活动显示,随着数据安全管理加强和本土化需求提升,企业对国产CRM替代方案的关注持续增长。

  • 锐捷网络重磅发布RG-UNC CS网络数字化平台:四大核心能力重塑企业网络管理新范式

    锐捷发布RG-UNC网络数字化平台CS系列产品,通过全网统一融合管理、组网编排及自动化部署、便捷准入与访问控制、全链业务保障与可视四大核心能力,重新定义企业网络管理标准。该平台基于微服务架构打造,支持服务组件灵活扩展与故障自愈,兼容第三方系统,满足不同规模客户需求。CS系列面向大中型园区,支持"管、控、析、维、营"全生命周期管理;AS系列作为轻量化衍生品,适合中小型园区。产品实现分钟级上线、策略随行、业务一键逃生等功能,显著提升网络部署效率与运维体验。