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.

最新文章

  1. GitHub for Windows提交失败“failed to sync this branch”
  2. URL转Drawable之 Android中获取网络图片的三种方法
  3. [HTML/HTML5]9 使用表单
  4. hdu1201-18岁生日
  5. java中的接口回调
  6. ECSHOP 商品评论条件修改——购买过该商品且只能评价一次(购买多少次能评价多少次)
  7. JOSN对象与JSON字符串的相互转化
  8. php报警:Strict Standards: Only variables should be passed by reference in
  9. 【玩转Ubuntu】04. Ubuntu上配置git环境
  10. Run Loop简介 分类: ios技术 ios相关 2015-03-11 22:21 73人阅读 评论(0) 收藏
  11. Java获取异常堆栈信息
  12. Sql 优化解决方案
  13. shell利用mysql表项的icmp检测
  14. CSS学习笔记_day2
  15. 20164310Exp1 PC平台逆向破解和BOF基础
  16. Android手机app的adb命令测试电量
  17. 【转】MySQL中的行级锁,表级锁,页级锁
  18. Cocos Creator_发布到微信小游戏平台
  19. 【UML】Java代码与UML模型相互转换方法
  20. 10.13 Django随笔

热门文章

  1. DAX/PowerBI系列 - 累计总计(Cumulative Total, Running Total)
  2. 查看CPU位数的方法
  3. laravel5.8 Models
  4. 关于 php for zookeeper
  5. Java基本的程序结构设计 控制流程
  6. 多线程使用@Async注解创建多线程,自定义线程池
  7. windows CMD常用基础命令
  8. java阻塞队列得实现
  9. JVM体系结构及优化
  10. java面向对象2-封装