当前位置: 首页 > news >正文

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

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

http://www.cnnetsun.cn/news/166287.html

相关文章:

  • 自走式除草机器人结构设计
  • Open-AutoGLM体温监测实战指南(从部署到数据分析全流程曝光)
  • Open-AutoGLM如何实现个性化体重预测:3个你必须掌握的技术细节
  • 【家庭自动化终极方案】:用Open-AutoGLM实现零遗忘家务安排
  • GraphRAG实战终极指南!从0到1打通OpenAI+LangChain+Neo4j,收藏这篇就够了!
  • 最近在研究石墨烯材料,这玩意儿真是神奇。说它是“材料界的明星”一点也不夸张。石墨烯的导电性和导热性都超强,而且它只有一层碳原子厚,简直是纳米技术的完美代表
  • Open-AutoGLM如何重构洗衣流程:9大优化策略全公开
  • 【AI营养师来了】:Open-AutoGLM饮食热量统计系统深度测评与优化建议
  • 基于单片机的智能门禁系统的设计与实现
  • 基于PLC工业机器人视觉定位及自动码垛系统的设计
  • 基于SSM的大王门店管理系统设计与实现
  • 网络安全完全指南:从小白到高手的系统学习路线与实战精讲
  • C++ 最強武器:利用類型系統實現零成本抽象
  • (28)全注解开发底层原理
  • jQuery UI 实例 - 对话框(Dialog)
  • 模型版本迭代中的回归测试策略
  • 【Open-AutoGLM家务提醒安排】:揭秘智能家庭任务调度背后的AI黑科技
  • Open-AutoGLM食材购买避坑指南:90%人忽略的3类关键营养匹配原则
  • Open-AutoGLM任务中断恢复实战(断点续训技术大揭秘)
  • 【Open-AutoGLM饮食热量统计】:揭秘AI自动识别食物热量的黑科技与实测效果
  • Linly-Talker如何避免‘恐怖谷效应’?外观设计心理学研究
  • 基于Spring Boot的儿童福利院管理系统的设计与实现毕业设计
  • 基于Android的网上点餐APP
  • 如何用Open-AutoGLM实现秒级故障响应?一线架构师亲授压箱底方案
  • Open-AutoGLM日志系统揭秘,掌握这6个参数才算真正入门
  • jQuery UI 实例 - 放置(Droppable)
  • 探索三相两电平光伏逆变器DC - AC部分的Simulink仿真之旅
  • 【AI推理服务稳定性提升】:基于Open-AutoGLM的后台运行配置最佳实践
  • Open-AutoGLM网络配置避坑指南(一线专家亲授12年实战经验)
  • Open-AutoGLM报错代码怎么破:从日志到修复的7步闭环流程