news 2026/6/10 23:56:59

jQuery UI 实例 - 部件库(Widget Factory)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jQuery UI 实例 - 部件库(Widget Factory)

jQuery UI Widget Factory(部件工厂)实例

Widget Factory是 jQuery UI 的核心机制($.widget()),它允许你以标准、模块化的方式创建可重用、可配置、可扩展的状态ful 插件(部件)。所有 jQuery UI 官方组件(如 Dialog、Accordion、Autocomplete 等)都是基于 Widget Factory 构建的。

使用 Widget Factory 创建的插件支持:

  • 选项(options)
  • 方法(methods)
  • 事件回调(callbacks)
  • 私有/公有方法
  • 自动销毁(destroy)
  • 继承与扩展

下面提供几个渐进实例,从基础到高级,帮助你理解并自定义部件。

1.最基础自定义部件

创建一个简单的“问候”部件。

<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>jQuery UI Widget Factory 基础示例</title><scriptsrc="//code.jquery.com/jquery-3.6.0.min.js"></script><scriptsrc="//code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script></head><body><divid="greeting"data-name="世界"></div><script>// 创建一个名为 "custom.greeting" 的部件$.widget("custom.greeting",{// 默认选项options:{name:"陌生人",message:"你好"},// 构造器(初始化时调用)_create:function(){this.element.text(this.options.message+", "+this.options.name+"!");this._refresh();},// 私有方法:更新显示_refresh:function(){this.element.addClass("ui-greeting");},// 公有方法:更改问候语say:function(newMessage){this.option("message",newMessage);this._create();// 重新渲染},// 销毁时清理_destroy:function(){this.element.removeClass("ui-greeting").text("");}});// 使用部件$(function(){$("#greeting").greeting({name:$("#greeting").data("name"),// 从 data 属性读取message:"欢迎"});// 3秒后调用公有方法setTimeout(function(){$("#greeting").greeting("say","再见");},3000);});</script></body></html>
2.带事件回调的计数器部件

支持点击增加计数,并触发自定义事件。

<divid="counter"></div><buttonid="inc">+1</button><script>$.widget("custom.counter",{options:{value:0,step:1,change:null// 回调事件},_create:function(){this.element.text(this.options.value).addClass("ui-counter");this._on(this.element,{click:this.increment});},increment:function(){this.option("value",this.options.value+this.options.step);this._trigger("change",null,{value:this.options.value});// 触发事件},// 公有方法:获取/设置值value:function(newValue){if(newValue===undefined){returnthis.options.value;}this.option("value",newValue);this.element.text(newValue);}});$(function(){$("#counter").counter({change:function(event,data){console.log("计数变为:"+data.value);}});$("#inc").click(function(){$("#counter").counter("increment");});});</script>
3.继承现有部件(扩展 Dialog)

创建一个带默认标题和按钮的“确认对话框”。

<buttonid="openConfirm">打开确认框</button><script>// 继承 $.ui.dialog$.widget("custom.confirmDialog",$.ui.dialog,{options:{title:"确认操作",modal:true,buttons:{"确定":function(){$(this).confirmDialog("close");alert("已确认!");},"取消":function(){$(this).confirmDialog("close");}}}});$(function(){$("#openConfirm").click(function(){$("<div>你确定要执行此操作吗?</div>").confirmDialog("open");});});</script>
4.完整工具提示部件(类似 Tooltip)

自定义一个简单 Tooltip。

<spanclass="has-tip"title="这是一个自定义提示">悬停我</span><script>$.widget("custom.myTooltip",{options:{content:""},_create:function(){this.tooltip=$("<div>").addClass("ui-mytooltip").text(this.element.attr("title")).hide().appendTo("body");this._on(this.element,{mouseenter:this._show,mouseleave:this._hide});this.element.removeAttr("title");},_show:function(){this.tooltip.show().position({my:"left center",at:"right+10 center",of:this.element});},_hide:function(){this.tooltip.hide();},destroy:function(){this.tooltip.remove();$.Widget.prototype.destroy.call(this);}});$(function(){$(".has-tip").myTooltip();});</script><style>.ui-mytooltip{background:#333;color:white;padding:8px;border-radius:4px;}</style>

Widget Factory 核心方法总结

使用 Widget Factory 创建的插件命名空间推荐格式:namespace.widgetName(如ui.dialogcustom.progressLoader

如果你想看一个进度加载器部件可拖拽面板、或基于现有组件的复杂扩展,请告诉我具体需求!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 21:15:19

白话AI Agent (3): AI知识库——给AI准备好高质量精加工饲料,让其更高质量完成任务

如果把AI原生大模型比作一个拥有广泛基础知识的通识大学生&#xff0c;而AI知识库则扮演了将这位大学生培养成在特定领域内具备专业知识和技能的人才的角色。这意味着AI知识库所提供的不仅是基础的学习材料&#xff0c;更是针对特定场景或行业领域的深入知识、案例研究、实践技…

作者头像 李华
网站建设 2026/6/10 16:14:55

【Open-AutoGLM课程同步全攻略】:手把手教你实现高效课表自动化管理

第一章&#xff1a;Open-AutoGLM课程表同步概述Open-AutoGLM 是一个面向自动化机器学习任务的开源框架&#xff0c;其核心功能之一是实现课程表数据的智能同步与调度管理。该模块允许用户将外部日历系统&#xff08;如 Google Calendar、Outlook&#xff09;中的课程安排自动导…

作者头像 李华
网站建设 2026/6/10 16:24:15

Open-AutoGLM饮食热量统计全解析,手把手教你构建个性化健康管理模型

第一章&#xff1a;Open-AutoGLM饮食热量统计Open-AutoGLM 是一款基于大语言模型的自动化饮食热量分析工具&#xff0c;专为健康管理和营养追踪设计。它能够识别用户输入的饮食描述&#xff0c;自动解析食材成分&#xff0c;并结合内置营养数据库估算总热量与宏量营养素分布。功…

作者头像 李华
网站建设 2026/6/9 19:28:42

Open-AutoGLM食材推荐机制揭秘:为什么它比你更懂该买什么菜?

第一章&#xff1a;Open-AutoGLM食材推荐机制揭秘&#xff1a;为什么它比你更懂该买什么菜&#xff1f;在智能厨房时代&#xff0c;Open-AutoGLM正悄然改变我们的买菜方式。它不是简单的菜谱推荐系统&#xff0c;而是一个融合用户习惯、季节时令、营养搭配与库存管理的AI决策引…

作者头像 李华
网站建设 2026/6/10 14:00:30

为什么90%的运动分析项目都选Open-AutoGLM?背后的技术优势全披露

第一章&#xff1a;Open-AutoGLM 运动数据记录Open-AutoGLM 是一个开源的自动化运动数据采集与分析框架&#xff0c;专为智能穿戴设备和移动健康应用设计。它支持多种传感器数据的实时记录&#xff0c;包括加速度计、陀螺仪和心率监测器&#xff0c;能够精准捕捉用户的运动行为…

作者头像 李华
网站建设 2026/6/10 13:52:51

为什么你的Open-AutoGLM任务无法恢复?99%的人都忽略了这4个细节

第一章&#xff1a;Open-AutoGLM 任务中断恢复的核心挑战在大规模语言模型训练与推理场景中&#xff0c;Open-AutoGLM 任务的执行周期长、资源消耗高&#xff0c;极易受到硬件故障、网络波动或调度策略变更的影响&#xff0c;导致任务中断。如何在中断后高效、准确地恢复任务状…

作者头像 李华