How jQuery UI Works
https://learn.jquery.com/jquery-ui/how-jquery-ui-works/
jQuery UI contains many widgets that maintain state and therefore may have a slightly different usage pattern than typical jQuery plugins you are already used to.
While the initialization is the same as most jQuery plugins, jQuery UI's widgets are built on top of the Widget Factory which provides the same general API to all of them.
So if you learn how to use one, then you'll know how to use all of them! This document will walk you through the common functionality, using the progressbar widget for the code examples.
jQuery UI是基于widget factory的,只要你学会如何使用jQuery UI,那么就可以知道如何使用其他基于widget factory的
Initialization
In order to track the state of the widget, we must introduce a full life cycle for the widget.
The life cycle starts when the widget is initialized.
To initialize a widget, we simply call the plugin on one or more elements.
$( "#elem" ).progressbar();
This will initialize each element in the jQuery object, in this case the element with an id of "elem".
Because we called the .progressbar() method with no parameters, the widget is initialized with its default options.
We can pass a set of options during initialization in order to override the default options.
$( "#elem" ).progressbar({ value: 20 });
We can pass as many or as few options as we want during initialization. Any options that we don't pass will just use their default values.
The options are part of the widget's state, so we can set options after initialization as well. We'll see this later with the option method.
link Methods
Now that the widget is initialized, we can query its state or perform actions on the widget.
All actions after initialization take the form of a method call.
To call a method on a widget, we pass the name of the method to the jQuery plugin.
For example, to call the value method on our progressbar widget, we would use:
$( "#elem" ).progressbar( "value" );
If the method accepts parameters, we can pass them after the method name. For example, to pass the parameter 40 to the value method, we can use:
$( "#elem" ).progressbar( "value", 40 );
Just like other methods in jQuery, most widget methods return the jQuery object for chaining.
$( "#elem" )
.progressbar( "value", 90 )
.addClass( "almost-done" );
Common Methods
Each widget will have its own set of methods based on the functionality that the widget provides.
However, there are a few methods that exist on all widgets.
option
As we mentioned earlier, we can change options after initialization through the option method.
For example, we can change the progressbar's value to 30 by calling the option method.
$( "#elem" ).progressbar( "option", "value", 30 );
Note that this is different from the previous example where we were calling the value method.
In this example, we're calling the option method and saying that we want to change the value option to 30.
We can also get the current value for an option.
$( "#elem" ).progressbar( "option", "value" );
In addition, we can update multiple options at once by passing an object to the option method.
$( "#elem" ).progressbar( "option", {
value: 100,
disabled: true
});
You may have noticed that the option method has the same signature as getters and setters in jQuery core, such as .css() and .attr().
The only difference is that you have to pass the string "option" as the first parameter.
disable
As you might guess, the disable method disables the widget.
In the case of progressbar, this changes the styling to make the progressbar look disabled.
$( "#elem" ).progressbar( "disable" );
Calling the disable method is equivalent to setting the disabled option to true.
link enable
The enable method is the opposite of the disable method.
$( "#elem" ).progressbar( "enable" );
Calling the enable method is equivalent to setting the disabled option to false.
link destroy
If you no longer need the widget, you can destroy it and return back to the original markup.
This ends the life cycle of the widget.
$( "#elem" ).progressbar( "destroy" );
Once you destroy a widget, you can no longer call any methods on it unless you initialize the widget again.
If you're removing the element, either directly via .remove() or by modifying an ancestor with .html() or .empty(), the widget will automatically destroy itself.
link widget
Some widgets generate wrapper elements, or elements disconnected from the original element.
In these cases, the widget method will return the generated element.
In cases like the progressbar, where there is no generated wrapper, the widget method returns the original element.
$( "#elem" ).progressbar( "widget" );
link Events
All widgets have events associated with their various behaviors to notify you when the state is changing.
For most widgets, when the events are triggered, the names are prefixed with the widget name.
For example, we can bind to progressbar's change event which is triggered whenever the value changes.
$( "#elem" ).bind( "progressbarchange", function() {
alert( "The value has changed!" );
});
Each event has a corresponding callback, which is exposed as an option.
We can hook into progressbar's change callback instead of binding to the progressbarchange event, if we wanted to.
$( "#elem" ).progressbar({
change: function() {
alert( "The value has changed!" );
}
});
Common Events
While most events will be widget specific, all widgets have a create event. This event will be triggered immediately after the widget is created.
How jQuery UI Works的更多相关文章
- jQuery UI的基本使用方法与技巧
一.概述 jQuery UI is a widget and interaction library built on top of the jQuery JavaScript Library, th ...
- [转]Using the HTML5 and jQuery UI Datepicker Popup Calendar with ASP.NET MVC - Part 4
本文转自:http://www.asp.net/mvc/overview/older-versions/using-the-html5-and-jquery-ui-datepicker-popup-c ...
- jquery ui widget 源代码分析
jquery ui 的全部组件都是基于一个简单,可重用的widget. 这个widget是jquery ui的核心部分,有用它能实现一致的API.创建有状态的插件,而无需关心插件的内部转换. $.wi ...
- jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧
这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...
- jQuery UI与jQuery easyUI的冲突解决办法
jQuery UI与jQuery easyUI都是基于jQuery开发的.难免里面会有些方法名冲突! 因此对jQuery.easyui其中的两个方法名:resizable 和 draggable进行替 ...
- 【转】推荐10款最热门jQuery UI框架
推荐10款最热门jQuery UI框架 原创 在进行Web开发时,并非所有的库都适合你的项目,但你仍需要收藏一些Web UI设计相关的库或框架,以在你需要的时候,加快你的开发效率.本文为你推荐10款非 ...
- Jquery UI
jQuery UI简介 jQuery UI包含了许多维持状态的小部件(Widget),因此,它与典型的 jQuery 插件使用模式略有不同.所有的 jQuery UI 小部件(Widget)使用相同的 ...
- JQuery UI dialog 弹窗实例及参数说明
按钮代码: <a id="suprise" style="margin-left: 0.5em;cursor:pointer;">点我会有惊喜< ...
- Jquery UI - DatePicker 在Dialog中无法自动隐藏的解决思路
通过Jquery UI Dialog模态展示如下的一个员工编辑页面,但是遇到一个奇怪的问题:点击Start Date的input元素后,其无法失去焦点.从而导致DatePicker控件在选择日期后无法 ...
随机推荐
- mybatis工作原理及实现
对数据库的连接 使用时就创建连接,不使用就立即释放,对数据库进行频繁连接开启和关闭,造成数据库的资源浪费,影响数据库的性能: 解决办法:使用数据库连接池,管理数据库的连接. 2 将sql语句硬编码到j ...
- The library 'libhostpolicy.dylib' required to execute the application was not found in
.NET Core应用程序需要runtimeconfig.json文件.此JSON文件配置运行时的选项.没有runtimeconfig.json文件,这将失败. > dotnet Program ...
- 16.AutoMapper 之可查询扩展(Queryable Extensions)
https://www.jianshu.com/p/4b23e94a7825 可查询扩展(Queryable Extensions) 当在像NHibernate或者Entity Framework之类 ...
- 解析html,提取元素参数
r = s.get(loginurl, verify=False) dom = etree.HTML(r.content.decode("utf-8")) try: result[ ...
- iOS蓝牙中的进制转换,数据格式转换
最近在忙一个蓝牙项目,在处理蓝牙数据的时候,经常遇到进制之间的转换,蓝牙处理的是16进制(NSData),而我们习惯的计数方式是10进制,为了节省空间,蓝牙也会把16进制(NSData)拆成2进制记录 ...
- [PyQt5]动态显示matplotlib作图(一)
完整实例 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QVBoxLayout, QSizePoli ...
- Qualcomm_Mobile_OpenCL.pdf 翻译-6-工作组尺寸的性能优化
对于许多kernels来说,工作组大小的调整会是一种简单有效的方法.这章将会介绍基于工作组大小的基础知识,比如如何获取工作组大小,为什么工作组大小非常重要,同时也会讨论关于最优工作组大小的选择和调整的 ...
- Linux部署Redis及PHP-redis扩展
Redis是一个key-value存储系统,属于我们常说的NoSQL.它遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.它常用在缓存.队列.P ...
- Linux-定时任务排查
前段时间,哥们的服务器被人反弹了shell,由于反弹的地址不可达,系统总是会发送一条mail邮件到root账户,导致入侵行为被发现,由于反弹的动作是通过crontab来定时执行的,所以来梳理下cron ...
- Centos 7.5 双网卡内外网同时访问路由设置
说明:服务器有两张网卡分别是eth0.eth1,eth0配置内网IP:192.168.1.1/24,eth1配置外网IP:10.1.1.1/24:要求192.168.0.0/16网段走网卡eth0,网 ...