小部件工厂


jQuery.widget( name [, base ], prototype )

描述:使用与所有 jQuery UI 小部件相同的抽象,创建有状态的 jQuery 插件。

  • jQuery.widget( name [, base ], prototype )

    • name
      类型:字符串
      要创建的小部件的名称,包括命名空间。
    • base
      类型:函数()
      要继承的基本小部件。这必须是可以使用 `new` 关键字实例化的构造函数。默认为 jQuery.Widget
    • prototype
      类型:纯对象
      用作小部件原型的对象。

你可以从头开始创建新小部件,仅使用 $.Widget 对象作为要继承的基础,或者你可以明确继承自现有的 jQuery UI 或第三方小部件。使用与你继承自相同名称定义小部件,甚至允许你扩展小部件。

jQuery UI 包含许多维护状态的小部件,因此与典型 jQuery 插件相比,它们的用法模式略有不同。所有 jQuery UI 的小部件都使用相同模式,由小部件工厂定义。因此,如果你学习如何使用一个小部件,那么你就会知道如何使用所有小部件。

正在寻找有关小部件工厂的教程?查看jQuery 学习中心上的文章

注意:此文档显示使用进度条小部件的示例,但语法对于每个小部件都是相同的。

初始化

为了跟踪小部件的状态,我们必须为小部件引入一个完整的生命周期。生命周期从初始化小部件时开始。要初始化小部件,我们只需在一个或多个元素上调用插件。

1
$( "#elem" ).progressbar();

这将初始化 jQuery 对象中的每个元素,在本例中为 id 为 "elem" 的元素。

选项

由于 progressbar() 在没有参数的情况下被调用,所以小部件使用其默认选项进行初始化。我们可以在初始化期间传递一组选项来覆盖默认选项

1
$( "#elem" ).progressbar({ value: 20 });

我们可以在初始化期间传递任意数量的选项。我们不传递的任何选项都将使用其默认值。

您可以传递多个选项参数。这些参数将合并到一个对象中(类似于 $.extend( true, target, object1, objectN ))。这对于在实例之间共享选项,同时为每个实例覆盖某些属性非常有用

1
2
3
var options = { modal: true, show: "slow" };
$( "#dialog1" ).dialog( options );
$( "#dialog2" ).dialog( options, { autoOpen: false });

在初始化时传递的所有选项都将进行深度复制,以确保以后可以修改对象而不影响小部件。数组是唯一的例外,它们被引用为原样。此例外是为了支持数据绑定,其中数据源必须保留为引用。

默认值存储在小部件的原型上,因此我们有能力覆盖 jQuery UI 设置的值。例如,在设置以下内容后,所有未来的进度条实例都将默认为 80

1
$.ui.progressbar.prototype.options.value = 80;

这些选项是小部件状态的一部分,因此我们也可以在初始化后设置选项。我们稍后将在选项方法中看到这一点。

方法

现在小部件已初始化,我们可以查询其状态或对小部件执行操作。初始化后的所有操作都采用方法调用的形式。要在小部件上调用方法,我们将方法的名称传递给 jQuery 插件。例如,要在我们的进度条小部件上调用 value() 方法,我们将使用

1
$( "#elem" ).progressbar( "value" );

如果该方法接受参数,我们可以在方法名称后传递它们。例如,要将参数 40 传递给 value() 方法,我们可以使用

1
$( "#elem" ).progressbar( "value", 40 );

与 jQuery 中的其他方法一样,大多数小部件方法都会返回 jQuery 对象以进行链接。

1
2
3
$( "#elem" )
.progressbar( "value", 90 )
.addClass( "almost-done" );

每个小部件都将拥有自己的一组方法,具体取决于小部件提供的功能。但是,所有小部件上都存在一些方法,如下所述。

事件

所有小部件都有与其各种行为相关联的事件,以在状态更改时通知您。对于大多数小部件,当触发事件时,名称会以小部件名称为前缀并变为小写。例如,我们可以绑定到进度条的 change 事件,该事件在每次值更改时都会触发。

1
2
3
$( "#elem" ).bind( "progressbarchange", function() {
alert( "The value has changed!" );
});

每个事件都有一个相应的回调,它作为选项公开。如果需要,我们可以连接到进度条的 change 回调,而不是绑定到 progressbarchange 事件。

1
2
3
4
5
$( "#elem" ).progressbar({
change: function() {
alert( "The value has changed!" );
}
});

所有小部件都有一个 create 事件,该事件在实例化时触发。

实例

可以使用 instance() 方法从给定元素中检索小部件的实例。

1
$( "#elem" ).progressbar( "instance" );

如果在未与小部件关联的元素上调用 instance() 方法,则返回 undefined

1
$( "#not-a-progressbar" ).progressbar( "instance" ); // undefined

实例使用 jQuery.data() 存储,其中小部件的全名用作键。因此,:data 选择器还可以确定元素是否绑定了给定小部件。

1
2
$( "#elem" ).is( ":data('ui-progressbar')" ); // true
$( "#elem" ).is( ":data('ui-draggable')" ); // false

instance() 不同,即使正在测试的小部件尚未加载,也可以使用 :data

1
2
$( "#elem" ).nonExistentWidget( "instance" ); // TypeError
$( "#elem" ).is( ":data('ui-nonExistentWidget')" ); // false

您还可以使用 :data 获取给定小部件的所有实例元素的列表。

1
$( ":data('ui-progressbar')" );

属性

所有小部件都具有以下属性集

  • defaultElement:在不提供元素的情况下构造小部件实例时要使用的元素。例如,由于进度条的 defaultElement"<div>",因此 $.ui.progressbar({ value: 50 }) 在新创建的 <div> 上实例化进度条小部件实例。
  • document:包含小部件元素所在 document 的 jQuery 对象。如果您需要与 iframe 中的小部件进行交互,这将很有用。
  • element:包含用于实例化小部件的元素的 jQuery 对象。如果您选择多个元素并调用 .myWidget(),则会为每个元素创建一个单独的小部件实例。因此,此属性将始终包含一个元素。
  • namespace:小部件原型存储在全局 jQuery 对象上的位置。例如,"ui"namespace 表示小部件原型存储在 $.ui 上。
  • options:包含小部件当前正在使用的选项的对象。在实例化时,用户提供的任何选项都将自动与 $.myNamespace.myWidget.prototype.options 中定义的任何默认值合并。用户指定的选项将覆盖默认值。
  • uuid:小部件的唯一整数标识符。
  • version:小部件的字符串版本。对于 jQuery UI 小部件,这将设置为小部件正在使用的 jQuery UI 版本。小部件开发人员必须在其原型中显式设置此属性。
  • widgetEventPrefix:添加到此小组件触发的事件名称前缀。例如,可拖动小组件widgetEventPrefix"drag",因此,在创建可拖动小组件时,触发的事件名称为 "dragcreate"。默认情况下,小组件的 widgetEventPrefix 为其名称。注意:此属性已弃用,将在以后的版本中删除。事件名称将更改为 widgetName:eventName(例如 "draggable:create")。
  • widgetFullName:包括命名空间在内的小组件全名。对于 $.widget( "myNamespace.myWidget", {} )widgetFullName 将为 "myNamespace-myWidget"
  • widgetName:小组件的名称。对于 $.widget( "myNamespace.myWidget", {} )widgetName 将为 "myWidget"
  • window:包含小组件元素所在 window 的 jQuery 对象。如果您需要与 iframe 中的小组件进行交互,此对象非常有用。

基本小组件

说明: 小组件工厂使用基本小组件。

快速导航

事件

选项

类 

类型: 对象
默认值: {}

除了结构类之外,添加到小组件的其他(主题)类。结构类用作此选项的键,主题类用作值。请参阅 _addClass() 方法,了解如何在自定义小组件中使用此方法。查看各个小组件的文档,了解它们支持哪些类。

此选项的主要动机是将结构类映射到主题类。换句话说,任何以命名空间和窗口小部件为前缀的类,如"ui-progressbar-",都被视为结构类。这些类始终添加到窗口小部件中。与此相反,任何不特定于窗口小部件的类都被视为主题类。这些类可以是 jQuery UI 的 CSS 框架的一部分,但也可以来自其他 CSS 框架或在自定义样式表中定义。

在创建后设置classes选项将覆盖所有默认属性。要仅更改特定值,请使用深度设置器,例如.option( "classes.ui-progressbar-value", null )

代码示例

使用指定的classes选项初始化进度条窗口小部件,更改ui-progressbar类的主题

1
2
3
4
5
$( ".selector" ).progressbar({
classes: {
"ui-progressbar": "highlight"
}
});

在初始化后获取或设置classes选项

1
2
3
4
5
6
7
8
// Getter
var classes = $( ".selector" ).widget( "option", "classes" );
// Setter, override all classes
$( ".selector" ).widget( "option", "classes", { "custom-header": "icon-warning" } );
// Setter, override just one class
$( ".selector" ).widget( "option", "classes.custom-header", "icon-warning" );

disabled 

类型:布尔值
默认值:false
如果设置为true,则禁用窗口小部件。
代码示例

使用指定的disabled选项初始化窗口小部件

1
2
3
$( ".selector" ).widget({
disabled: true
});

在初始化后获取或设置disabled选项

1
2
3
4
5
// Getter
var disabled = $( ".selector" ).widget( "option", "disabled" );
// Setter
$( ".selector" ).widget( "option", "disabled", true );

hide 

类型:布尔值数字字符串对象
默认值:null
是否以及如何对元素隐藏进行动画处理。
支持多种类型
  • 布尔值:当设置为false时,将不使用动画,元素将立即隐藏。当设置为true时,元素将以默认持续时间和默认缓动淡出。
  • 数字:元素将以指定的持续时间和默认缓动淡出。
  • 字符串:元素将使用指定的效果隐藏。该值可以是内置 jQuery 动画方法的名称,例如"slideUp",或 jQuery UI 效果 的名称,例如"fold"。在这两种情况下,效果都将使用默认持续时间和默认缓动。
  • 对象:如果该值是一个对象,则可以提供effectdelaydurationeasing属性。如果effect属性包含 jQuery 方法的名称,则将使用该方法;否则,假定它是 jQuery UI 效果的名称。在使用支持其他设置的 jQuery UI 效果时,可以将这些设置包含在对象中,它们将传递给效果。如果省略durationeasing,则将使用默认值。如果省略effect,则将使用"fadeOut"。如果省略delay,则不使用延迟。
代码示例

使用指定的hide选项初始化窗口小部件

1
2
3
$( ".selector" ).widget({
hide: { effect: "explode", duration: 1000 }
});

在初始化后获取或设置hide选项

1
2
3
4
5
// Getter
var hide = $( ".selector" ).widget( "option", "hide" );
// Setter
$( ".selector" ).widget( "option", "hide", { effect: "explode", duration: 1000 } );

show 

类型:布尔值数字字符串对象
默认值:null
是否以及如何对元素显示进行动画处理。
支持多种类型
  • 布尔值:设置为false时,不使用任何动画,元素将立即显示。设置为true时,元素将以默认持续时间和默认缓动淡入。
  • 数字:元素将以指定的持续时间和默认缓动淡入。
  • 字符串:元素将使用指定的特效显示。该值可以是内置 jQuery 动画方法的名称,例如"slideDown",也可以是jQuery UI 效果的名称,例如"fold"。在这两种情况下,效果都将使用默认持续时间和默认缓动。
  • 对象:如果该值为对象,则可以提供effectdelaydurationeasing属性。如果effect属性包含 jQuery 方法的名称,则将使用该方法;否则,将假定它是 jQuery UI 效果的名称。在使用支持附加设置的 jQuery UI 效果时,可以将这些设置包含在对象中,并将它们传递给效果。如果省略durationeasing,则将使用默认值。如果省略effect,则将使用"fadeIn"。如果省略delay,则不使用延迟。
代码示例

使用指定的show选项初始化小部件

1
2
3
$( ".selector" ).widget({
show: { effect: "blind", duration: 800 }
});

在初始化后获取或设置show选项

1
2
3
4
5
// Getter
var show = $( ".selector" ).widget( "option", "show" );
// Setter
$( ".selector" ).widget( "option", "show", { effect: "blind", duration: 800 } );

方法

_addClass( [element ], keys [, extra ] )返回:jQuery仅插件

向小部件的元素添加类。

这为用户提供了一个挂钩,通过classes选项添加其他类或替换默认样式类。

它还提供了在小部件被销毁时自动移除这些类的功能,只要你同时使用_addClass()_removeClass()_toggleClass()即可。这可以极大地简化自定义_destroy()方法的实现。

  • element
    类型:jQuery
    要向其添加类的元素。默认为this.element
  • 类型:字符串
    要添加的类,以空格分隔的列表。如果 classes 选项 的属性与键匹配,则该值也将被添加。

    当您只需要 extra 参数时,您可以通过指定 null 来跳过此参数。

  • 额外
    类型:字符串
    要添加的其他类,出于布局或其他原因而需要。与 keys 参数不同,这些参数与 classes 选项 的任何属性无关。与 keys 一样,在销毁小部件时它们也将自动被移除。
代码示例

ui-progressbar 类添加到小部件的元素(this.element)中。还将添加通过 classes 选项 为给定类指定的所有其他类。

1
this._addClass( "ui-progressbar" );

demo-popup-header 类添加到指定元素(此处引用 this.popup)。还将添加通过 classes 选项 为给定类指定的所有其他类。此外,它还将始终添加 ui-front 类。

1
this._addClass( this.popup, "demo-popup-header", "ui-front" );

ui-helper-hidden-accessible 类添加到指定元素。对 keys 参数使用 null 来跳过它。

1
this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );

_delay( fn [, delay ] )返回:数字

在指定延迟后调用提供函数。保持 this 上下文正确。本质上是 setTimeout()

返回超时 ID 以与 clearTimeout() 一起使用。

  • fn
    类型:函数() 或 字符串
    要调用的函数。也可以是小部件上方法的名称。
  • 延迟
    类型:数字
    在调用函数之前要等待的毫秒数。默认为 0
代码示例

在 100 毫秒后调用小部件上的 _foo() 方法。

1
this._delay( this._foo, 100 );

_destroy()返回:jQuery仅限插件

公开的 destroy() 方法清理所有常见数据、事件等,然后委派给 _destroy() 以进行自定义、特定于小部件的清理。
  • 此方法不接受任何参数。
代码示例

在小部件被销毁时从该小部件的元素中移除一个类。

1
2
3
_destroy: function() {
this.element.removeClass( "my-widget" );
}

_focusable( element )返回:jQuery仅限插件

设置 element 以在获得焦点时应用 ui-state-focus 类。

事件处理程序在销毁时自动清理。

  • element
    类型:jQuery
    要应用可聚焦行为的元素。
代码示例

对小部件内的元素集应用可聚焦样式。

1
this._focusable( this.element.find( ".my-items" ) );

_getCreateEventData()返回:Object

所有小部件都会触发 create 事件。默认情况下,事件中不提供任何数据,但此方法可以返回一个对象,该对象将作为 create 事件的数据传递。
  • 此方法不接受任何参数。
代码示例

将小部件的选项作为参数传递给 create 事件处理程序。

1
2
3
_getCreateEventData: function() {
return this.options;
}

_getCreateOptions()返回:Object

此方法允许小部件定义一个自定义方法,以便在实例化期间定义选项。用户提供的选项会覆盖此方法返回的选项,而后者又会覆盖默认选项。
  • 此方法不接受任何参数。
代码示例

使小部件元素的 id 属性可用作选项。

1
2
3
_getCreateOptions: function() {
return { id: this.element.attr( "id" ) };
}

_hide( element, option [, callback ] )返回:jQuery仅限插件

立即隐藏一个元素,使用内置动画方法或使用自定义效果。有关可能的 option 值,请参见 hide 选项。
  • element
    类型:jQuery
    要隐藏的元素。
  • option
    类型:Object
    定义如何隐藏元素的属性。
  • callback
    类型:函数()
    在元素完全隐藏后调用的回调。
代码示例

传递 hide 选项以进行自定义动画。

1
2
3
4
5
this._hide( this.element, this.options.hide, function() {
// Remove the element from the DOM when it's fully hidden.
$( this ).remove();
});

_hoverable( element )返回:jQuery仅限插件

设置 element 以在悬停时应用 ui-state-hover 类。

事件处理程序在销毁时自动清理。

  • element
    类型:jQuery
    要应用可悬停行为的元素。
代码示例

在悬停时对元素内的所有 <div> 应用可悬停样式。

1
this._hoverable( this.element.find( "div" ) );

_init()返回:jQuery仅插件

小组件具有不同于创建的初始化概念。只要插件在没有参数或仅带有选项哈希的情况下被调用,小组件就会被初始化;这包括小组件被创建时。

注意:仅当在没有参数的情况下对小组件进行连续调用时才应处理初始化。

  • 此方法不接受任何参数。
代码示例

如果设置了autoOpen选项,请调用open()方法。

1
2
3
4
5
_init: function() {
if ( this.options.autoOpen ) {
this.open();
}
}

_off( element, eventName )返回:jQuery仅插件

取消绑定指定元素的事件处理程序。
  • element
    类型:jQuery
    取消绑定事件处理程序的元素。与_on()方法不同,_off()需要元素。
  • eventName
    类型:字符串
    一个或多个以空格分隔的事件类型。
代码示例

取消绑定小组件元素的所有点击事件。

1
this._off( this.element, "click" );

_on( [suppressDisabledCheck ] [, element ], handlers )返回:jQuery仅插件

将事件处理程序绑定到指定元素。通过事件名称中的选择器支持委托,例如,“click .foo”。_on()方法提供了直接事件绑定的几个好处
  • 在处理程序中维护正确的this上下文。
  • 自动处理已禁用的小组件:如果小组件已禁用或事件发生在具有ui-state-disabled类的元素上,则不会调用事件处理程序。可以使用suppressDisabledCheck参数覆盖。
  • 事件处理程序会自动命名空间并在销毁时清除。
  • suppressDisabledCheck(默认值:false
    类型:布尔值
    是否绕过禁用检查。
  • element
    类型:jQuery
    将事件处理程序绑定到的元素。如果没有提供元素,则this.element用于非委托事件,小组件元素用于委托事件。
  • handlers
    类型:Object
    一个对象,其中键表示事件类型和用于委托的可选选择器,值表示要为该事件调用的处理程序函数。
代码示例

阻止在小组件元素内单击的所有链接的默认操作。

1
2
3
4
5
this._on( this.element, {
"click a": function( event ) {
event.preventDefault();
}
});

_removeClass( [element ], keys [, extra ] )返回:jQuery仅限插件

从小组件的元素中移除类。

参数与 _addClass() 方法 的参数相同,语义也相同,只是相反。

  • element
    类型:jQuery
    要从中移除类的元素。默认为 this.element
  • 类型:字符串
    要移除的类,以空格分隔的列表。如果 classes 选项 的属性与键匹配,则该值也将被移除。

    当您只需要 extra 参数时,您可以通过指定 null 来跳过此参数。

  • 额外
    类型:字符串
    要移除的其他类,出于布局或其他原因而需要。与 keys 参数不同,这些类与 classes 选项 的任何属性无关。
代码示例

从小组件的元素(this.element)中移除 ui-progressbar 类。还将移除为给定类通过 classes 选项 指定的任何其他类。

1
this._removeClass( "ui-progressbar" );

从指定元素(此处引用 this.popup)中移除 demo-popup-header 类。还将移除为给定类通过 classes 选项 指定的任何其他类。此外,它还将移除 ui-front 类。

1
this._removeClass( this.popup, "demo-popup-header", "ui-front" );

从指定元素中移除 ui-helper-hidden-accessible 类。对 keys 参数使用 null 以跳过它。

1
this._removeClass( this.liveRegion, null, "ui-helper-hidden-accessible" );

_setOption( key, value )返回:jQuery仅限插件

_setOptions() 方法中为每个单独的选项调用。小组件状态应根据更改进行更新。
  • key
    类型:字符串
    要设置的选项的名称。
  • value
    类型:Object
    要为该选项设置的值。
代码示例

当小组件的 heightwidth 选项更改时,更新小组件的元素。

1
2
3
4
5
6
7
8
9
_setOption: function( key, value ) {
if ( key === "width" ) {
this.element.width( value );
}
if ( key === "height" ) {
this.element.height( value );
}
this._super( key, value );
}

_setOptions( options )返回:jQuery仅限插件

无论以何种形式调用 option() 方法,只要调用该方法,就会调用此方法。

如果你可以为多个选项更改延迟处理器密集型更改,那么覆盖此方法将很有用。

  • options
    类型:Object
    包含要设置的选项的对象,其中选项的名称作为键,选项值作为值。
代码示例

如果 heightwidth 选项更改,则调用 resize() 方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
_setOptions: function( options ) {
var that = this,
resize = false;
$.each( options, function( key, value ) {
that._setOption( key, value );
if ( key === "height" || key === "width" ) {
resize = true;
}
});
if ( resize ) {
this.resize();
}
}

_show( element, option [, callback ] )返回:jQuery仅限插件

使用内置动画方法或自定义效果立即显示元素。有关可能的 option 值,请参见 show 选项。
  • element
    类型:jQuery
    要显示的元素。
  • option
    类型:Object
    定义如何显示元素的属性。
  • callback
    类型:函数()
    在元素完全显示后调用的回调函数。
代码示例

传递 show 选项以进行自定义动画。

1
2
3
4
5
this._show( this.element, this.options.show, function() {
// Focus the element when it's fully visible.
this.focus();
}

_super( [arg ] [, ... ] )返回:jQuery仅限插件

使用任何指定参数调用父级小部件的同名方法。本质上是 .call()
  • arg
    类型:Object
    传递给父级小部件方法的零到多个参数。
代码示例

处理 title 选项更新并调用父级小部件的 _setOption() 来更新选项的内部存储。

1
2
3
4
5
6
_setOption: function( key, value ) {
if ( key === "title" ) {
this.element.find( "h3" ).text( value );
}
this._super( key, value );
}

_superApply( arguments )返回:jQuery仅限插件

使用参数数组调用父级小部件的同名方法。本质上是 .apply()
  • arguments
    类型:Array
    传递给父级方法的参数数组。
代码示例

处理 title 选项更新并调用父级小部件的 _setOption() 来更新选项的内部存储。

1
2
3
4
5
6
_setOption: function( key, value ) {
if ( key === "title" ) {
this.element.find( "h3" ).text( value );
}
this._superApply( arguments );
}

_toggleClass( [element ], keys [, extra ], add )返回:jQuery仅限插件

切换小部件元素的类。

参数与 _addClass()_removeClass() 方法相同,但额外添加了布尔参数,用于指定添加或删除类。

与 jQuery 的 .toggleClass() 方法不同,布尔 add 参数始终是必需的。

  • element
    类型:jQuery
    要切换类的元素。默认为 this.element
  • 类型:字符串
    要切换的类,以空格分隔的列表。如果 classes 选项 的属性与某个键匹配,则该值也将被切换。

    当您只需要 extra 参数时,您可以通过指定 null 来跳过此参数。

  • 额外
    类型:字符串
    切换所需的附加类,用于布局或其他原因。与keys参数不同,这些类与classes选项的任何属性无关。与keys一样,在销毁小部件时也会自动删除这些类。
  • 添加
    类型:布尔值

    指示是否添加或删除指定的类,其中布尔值true表示应添加类,布尔值false表示应删除类。

代码示例

在小部件元素(this.element)上切换ui-state-disabled类。

1
this._toggleClass( null, "ui-state-disabled", !!value );

_trigger( type [, event ] [, data ] )返回:布尔值

触发事件及其关联的回调。

名称等于type的选项作为回调被调用。

事件名称是小部件名称和type的小写连接。

注意:提供数据时,必须提供所有三个参数。如果没有要传递的事件,只需传递null

如果阻止了默认操作,将返回false,否则返回true。当处理程序返回false或调用event.preventDefault()时,会阻止默认操作。

  • 类型
    类型:字符串
    type应与回调选项的名称匹配。将自动生成完整的事件类型。
  • 事件
    类型:事件
    导致此事件发生的原始事件;对于向侦听器提供上下文很有用。
  • 数据
    类型:Object
    与事件关联的数据哈希。
代码示例

每当按下某个键时,触发search事件。

1
2
3
4
5
6
7
8
9
10
11
12
this._on( this.element, {
keydown: function( event ) {
// Pass the original event so that the custom search event has
// useful information, such as keyCode
this._trigger( "search", event, {
// Pass additional information unique to this event
value: this.element.val()
});
}
});

destroy()返回:jQuery仅插件

完全删除小部件功能。这会将元素恢复到其预初始化状态。
  • 此方法不接受任何参数。

disable()返回:jQuery仅插件

禁用小部件。
  • 此方法不接受任何参数。

enable()返回:jQuery仅插件

启用小部件。
  • 此方法不接受任何参数。

instance()返回:对象

检索小部件的实例对象。如果元素没有关联的实例,则返回undefined

与其他小部件方法不同,instance()在小部件插件加载后可以安全地对任何元素进行调用。

  • 此方法不接受任何参数。

option( optionName )返回:对象

获取当前与指定的optionName关联的值。

注意:对于以对象作为其值的对象,你可以使用点符号来获取特定键的值。例如,"foo.bar"将获取foo选项上bar属性的值。

  • optionName
    类型:字符串
    要获取的选项的名称。

option()返回:PlainObject

获取一个包含表示当前小部件选项哈希的键/值对的对象。
  • 此签名不接受任何参数。

option( optionName, value )返回:jQuery仅插件

设置与指定 optionName 关联的小组件选项的值。

注意:对于以对象作为其值的小组件,可以通过对 optionName 使用点符号来设置单个属性的值。例如,"foo.bar" 将仅更新 foo 选项的 bar 属性。

  • optionName
    类型:字符串
    要设置的选项的名称。
  • value
    类型:Object
    要为该选项设置的值。

option( options )返回:jQuery仅限插件

设置小组件的一个或多个选项。
  • options
    类型:Object
    要设置的选项-值对映射。

widget()返回:jQuery

返回一个包含原始元素或其他相关生成元素的 jQuery 对象。
  • 此方法不接受任何参数。

事件

create( event, ui )类型:widgetcreate

在创建小组件时触发。

注意:ui 对象为空,但为了与其他事件保持一致而包含在内。

代码示例

使用指定的 create 回调初始化小组件

1
2
3
$( ".selector" ).widget({
create: function( event, ui ) {}
});

将事件侦听器绑定到 widgetcreate 事件

1
$( ".selector" ).on( "widgetcreate", function( event, ui ) {} );