jQuery UI API - 部件庫(kù)(Widget Factory)

所屬類(lèi)別

實(shí)用工具(Utilities) | 小部件(Widgets)

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

描述:使用與所有 jQuery UI 小部件相同的抽象化來(lái)創(chuàng)建有狀態(tài)的 jQuery 插件。

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

參數(shù) 類(lèi)型 類(lèi)型
name String 要?jiǎng)?chuàng)建的小部件名稱,包括命名空間。
base Function() 要繼承的基礎(chǔ)小部件。必須是一個(gè)可以使用 `new` 關(guān)鍵詞實(shí)例化的構(gòu)造函數(shù)。默認(rèn)為 jQuery.Widget。
prototype PlainObject 要作為小部件原型使用的對(duì)象。

您可以使用 $.Widget 對(duì)象作為要繼承的基礎(chǔ),或者可以明確地從現(xiàn)有的 jQuery UI 或第三方控件,從頭開(kāi)始創(chuàng)建新的小部件。定義一個(gè)帶有相同名稱的小部件來(lái)繼承基礎(chǔ)部件,甚至允許您適當(dāng)?shù)財(cái)U(kuò)展小部件。

jQuery UI 中包含許多保持狀態(tài)的小部件,因此比典型的 jQuery 插件稍有不同的使用模式。所有的jQuery UI 小部件使用相同的模式,這是由部件庫(kù)(Widget Factory)定義的。所以,只要您學(xué)會(huì)使用其中一個(gè),您就知道如何使用其他的小部件(Widget)。

注釋:本章節(jié)使用 進(jìn)度條部件(Progressbar Widget) 演示實(shí)例,但是語(yǔ)法適用于每個(gè)小部件。

初始化

為了跟蹤小部件的狀態(tài),我們必須引入小部件的全生命周期。小部件初始化時(shí)生命周期開(kāi)始。要初始化一個(gè)小部件,我們只需要簡(jiǎn)單地在一個(gè)或多個(gè)元素上調(diào)用插件。

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

這將初始化 jQuery 對(duì)象中的每個(gè)元素。上面實(shí)例中元素 id 為 "elem"。

選項(xiàng)

由于 progressbar() 調(diào)用時(shí)不帶參數(shù),小部件是使用默認(rèn)選項(xiàng)進(jìn)行初始化的。我們可以在初始化時(shí)傳遞一組選項(xiàng)來(lái)覆蓋默認(rèn)選項(xiàng):

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

我們可以根據(jù)需要傳遞選項(xiàng)的個(gè)數(shù),任何我們未傳遞的選項(xiàng)都使用它們的默認(rèn)值。

您可以傳遞多個(gè)選項(xiàng)參數(shù),這些參數(shù)將會(huì)被合并為一個(gè)對(duì)象(類(lèi)似于 $.extend( true, target, object1, objectN ))。這在為所有實(shí)例覆蓋一些設(shè)置,實(shí)例間共享選項(xiàng)時(shí)很有用:

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

所有在初始化時(shí)傳遞的選項(xiàng)都是深拷貝的,確保后續(xù)在不影響小部件的情況下修改對(duì)象。數(shù)組是唯一的例外,它們是按原樣引用的。這個(gè)例外是為了適當(dāng)?shù)刂С謹(jǐn)?shù)據(jù)綁定,其中數(shù)據(jù)源必須作為引用。

默認(rèn)值保存在小部件的屬性中,因此我們可以覆蓋 jQuery UI 設(shè)置的值。例如,在下面的設(shè)置后,所有將來(lái)的進(jìn)度條實(shí)例將默認(rèn)為值 80:

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

選項(xiàng)是小部件狀態(tài)的組成部分,所以我們也可以在初始化后設(shè)置選項(xiàng)。我們會(huì)在后續(xù)看到 option 方法。

方法

現(xiàn)在小部件已經(jīng)初始化,我們可以查詢它的狀態(tài),或者在小部件上執(zhí)行動(dòng)作。所有初始化后的動(dòng)作都是以方法調(diào)用方式執(zhí)行。為了在小部件上調(diào)用一個(gè)方法,我們向 jQuery 插件傳遞方法的名稱。例如,在進(jìn)度條部件(Progressbar Widget)上調(diào)用 value() 方法,我們可以使用:

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

如果方法接受參數(shù),我們可以在方法名稱后傳遞參數(shù)。例如,要傳遞參數(shù) 40value() 方法,我們可以使用:

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

就像 jQuery 中的其他方法,大多數(shù)的小部件方法返回 jQuery 對(duì)象:

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

每個(gè)小部件都有自己的方法設(shè)置,這些設(shè)置是基于小部件提供的功能。但是,有一些方法是存在于所有的小部件上,這會(huì)在下面進(jìn)行詳細(xì)講解。

事件

所有的小部件都有與它們各種行為相關(guān)的事件,以便在狀態(tài)改變的時(shí)候通知您。對(duì)于大多數(shù)的小部件,當(dāng)事件被觸發(fā)時(shí),名稱以小部件名稱的小寫(xiě)字母形式作為前綴。例如,我們可以綁定進(jìn)度條的 change 事件,該事件在值改變時(shí)觸發(fā)。

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

每個(gè)事件都有一個(gè)對(duì)應(yīng)的回調(diào),這會(huì)作為選項(xiàng)。如果需要,我們可以抓住進(jìn)度條的 change 回調(diào),而不用綁定 progressbarchange 事件。

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

所有的小部件都有一個(gè) change 事件,該事件在實(shí)例化時(shí)觸發(fā)。

實(shí)例化

小部件的實(shí)例是使用帶有小部件全稱作為鍵的 jQuery.data() 存儲(chǔ)的。因此,您可以使用下面代碼從元素檢索進(jìn)度條部件(Progressbar Widget)的實(shí)例對(duì)象。

$( "#elem" ).data( "ui-progressbar" );

元素是否綁定了給定小部件,可以使用 :data 選擇器來(lái)檢測(cè)。

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

您也可以使用 :data 來(lái)獲得作為給定小部件實(shí)例的所有元素的列表。

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

屬性

所有的小部件都有下面的屬性:

  • defaultElement:當(dāng)構(gòu)造小部件實(shí)例未提供元素時(shí)要使用的元素。例如,由于進(jìn)度條的 defaultElement"<div>",$.ui.progressbar({ value: 50 }) 在一個(gè)新建的 <div> 上實(shí)例化進(jìn)度條小部件實(shí)例。
  • document:其內(nèi)包含小部件元素的 document。如果需要在框架內(nèi)與小部件進(jìn)行交互時(shí)很有用。
  • element:一個(gè) jQuery 對(duì)象,包含用于實(shí)例化小部件的 元素。如果您選擇多個(gè)元素并調(diào)用 .myWidget(),將為每個(gè)元素創(chuàng)建一個(gè)單獨(dú)的小部件實(shí)例。因此,該屬性總是包含一個(gè)元素。
  • namespace:小部件原型存儲(chǔ)的全局 jQuery 對(duì)象的位置。例如,"ui"namespace 表示小部件原型存儲(chǔ)在 $.ui。
  • options:一個(gè)包含小部件當(dāng)前使用選項(xiàng)的對(duì)象。在實(shí)例化時(shí),用戶提供的任何選項(xiàng)將會(huì)自動(dòng)與 $.myNamespace.myWidget.prototype.options 中定義的默認(rèn)值合并。用戶指定的選項(xiàng)會(huì)覆蓋默認(rèn)值。
  • uuid:一個(gè)表示控件標(biāo)識(shí)符的唯一整數(shù)。
  • version:小部件的字符串版本。對(duì)于 jQuery UI 小部件,該屬性會(huì)被設(shè)置為小部件使用的 jQuery UI 的版本。插件開(kāi)發(fā)者必須在他們的原型中明確設(shè)置該屬性。
  • widgetEventPrefix:添加到小部件事件名稱的前綴。例如,可拖拽小部件(Draggable Widget)widgetEventPrefix"drag",因此當(dāng)創(chuàng)建一個(gè) draggable 時(shí),事件的名稱是 "dragcreate"。默認(rèn)情況下,小部件的 widgetEventPrefix 是它的名稱。注意:該屬性已被廢棄,將在以后的版本中非常。事件名稱將被改為 widgetName:eventName (例如 "draggable:create")。
  • widgetFullName:包含命名空間的小部件全稱。對(duì)于 $.widget( "myNamespace.myWidget", {} ), widgetFullName 將是 "myNamespace-myWidget"。
  • widgetName:小部件的名稱。對(duì)于 $.widget( "myNamespace.myWidget", {} ),widgetName 將是 "myWidget"。
  • window:其內(nèi)包含小部件元素的 window。如果需要在框架內(nèi)與小部件進(jìn)行交互時(shí)很有用。

jQuery.Widget 基礎(chǔ)小部件用法

描述:部件庫(kù)(Widget Factory)使用的基礎(chǔ)小部件。

快速導(dǎo)航

選項(xiàng) 方法 事件

選項(xiàng) 類(lèi)型 描述 默認(rèn)值
disabled Boolean 如果設(shè)置為 true,則禁用該小部件。

代碼實(shí)例:

初始化帶有指定 disabled 選項(xiàng)的小部件:

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

在初始化后,獲取或設(shè)置 disabled 選項(xiàng):

// getter
var disabled = $( ".selector" ).widget( "option", "disabled" );
 
// setter
$( ".selector" ).widget( "option", "disabled", true );
	
false
hide Boolean 或 Number 或 String 或 Object 是否使用動(dòng)畫(huà)隱藏元素,以及如何動(dòng)畫(huà)隱藏元素。

支持多個(gè)類(lèi)型:

  • Boolean:當(dāng)設(shè)置為 false 時(shí),則不使用動(dòng)畫(huà),元素會(huì)立即隱藏。當(dāng)設(shè)置為 true 時(shí),元素會(huì)使用默認(rèn)的持續(xù)時(shí)間和默認(rèn)的 easing 淡出。
  • Number:元素將使用指定的持續(xù)時(shí)間和默認(rèn)的 easing 淡出。
  • String:元素將使用指定的特效隱藏。該值可以是一個(gè)內(nèi)建的 jQuery 動(dòng)畫(huà)方法名稱,比如 "slideUp",也可以是一個(gè) jQuery UI 特效 的名稱,比如"fold"。以上兩種情況的特效將使用默認(rèn)的持續(xù)時(shí)間和默認(rèn)的 easing。
  • Object:如果值是一個(gè)對(duì)象,則 effect、delay、durationeasing 屬性會(huì)被提供。如果 effect 屬性包含 jQuery 方法的名稱,則使用該方法,否則,它被認(rèn)為是一個(gè) jQuery UI 特效的名稱。當(dāng)使用一個(gè)支持額外設(shè)置的 jQuery UI 特效時(shí),您可以在對(duì)象中包含這些設(shè)置,且它們會(huì)被傳遞給特效。如果 durationeasing 被省略,則使用默認(rèn)值。如果 effect 被省略,則使用 "fadeOut"。如果 delay 被省略,則不使用延遲。

代碼實(shí)例:

初始化帶有指定 hide 選項(xiàng)的小部件:

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

在初始化后,獲取或設(shè)置 hide 選項(xiàng):

// getter
var hide = $( ".selector" ).widget( "option", "hide" );
 
// setter
$( ".selector" ).widget( "option", "hide", { effect: "explode", duration: 1000 } );
	
null
show Boolean 或 Number 或 String 或 Object 是否使用動(dòng)畫(huà)顯示元素,以及如何動(dòng)畫(huà)顯示元素。

支持多個(gè)類(lèi)型:

  • Boolean:當(dāng)設(shè)置為 false 時(shí),則不使用動(dòng)畫(huà),元素會(huì)立即顯示。當(dāng)設(shè)置為 true 時(shí),元素會(huì)使用默認(rèn)的持續(xù)時(shí)間和默認(rèn)的 easing 淡入。
  • Number:元素將使用指定的持續(xù)時(shí)間和默認(rèn)的 easing 淡入。
  • String:元素將使用指定的特效顯示。該值可以是一個(gè)內(nèi)建的 jQuery 動(dòng)畫(huà)方法名稱,比如 "slideDown",也可以是一個(gè) jQuery UI 特效 的名稱,比如"fold"。以上兩種情況的特效將使用默認(rèn)的持續(xù)時(shí)間和默認(rèn)的 easing。
  • Object:如果值是一個(gè)對(duì)象,則 effectdelay、durationeasing 屬性會(huì)被提供。如果 effect 屬性包含 jQuery 方法的名稱,則使用該方法,否則,它被認(rèn)為是一個(gè) jQuery UI 特效的名稱。當(dāng)使用一個(gè)支持額外設(shè)置的 jQuery UI 特效時(shí),您可以在對(duì)象中包含這些設(shè)置,且它們會(huì)被傳遞給特效。如果 durationeasing 被省略,則使用默認(rèn)值。如果 effect 被省略,則使用 "fadeIn"。如果 delay 被省略,則不使用延遲。

代碼實(shí)例:

初始化帶有指定 show 選項(xiàng)的小部件:

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

在初始化后,獲取或設(shè)置 show 選項(xiàng):

// getter
var show = $( ".selector" ).widget( "option", "show" );
 
// setter
$( ".selector" ).widget( "option", "show", { effect: "blind", duration: 800 } );
	
null

方法 返回 描述
_create() jQuery (plugin only) _create() 方法是小部件的構(gòu)造函數(shù)。沒(méi)有參數(shù),但是 this.elementthis.options 已經(jīng)設(shè)置。
  • 該方法不接受任何參數(shù)。

代碼實(shí)例:

基于一個(gè)選項(xiàng)設(shè)置小部件元素的背景顏色。

_create: function() {
  this.element.css( "background-color", this.options.color );
}
	
_delay( fn [, delay ] ) Number 在指定延遲后調(diào)用提供的函數(shù)。保持 this 上下文正確。本質(zhì)上是 setTimeout()。
使用 clearTimeout() 返回超時(shí) ID。
  • fn
    類(lèi)型:Function() 或 String
    描述:要調(diào)用的函數(shù)。也可以是小部件上方法的名稱。
  • delay
    類(lèi)型:Number
    描述:調(diào)用函數(shù)前等待的毫秒數(shù),默認(rèn)為 0

代碼實(shí)例:

100 毫秒后在小部件上調(diào)用 _foo() 方法。

this._delay( this._foo, 100 );
	
_destroy() jQuery (plugin only) 公共的 destroy() 方法清除所有的公共數(shù)據(jù)、事件等等。代表了定制、指定小部件、清理的 _destroy()。
  • 該方法不接受任何參數(shù)。

代碼實(shí)例:

當(dāng)小部件被銷(xiāo)毀時(shí),從小部件的元素移除一個(gè) class。

_destroy: function() {
  this.element.removeClass( "my-widget" );
}
	
_focusable( element ) jQuery (plugin only) 建立聚焦在元素上時(shí)要應(yīng)用 ui-state-focus class 的 element。
  • element
    類(lèi)型:jQuery
    描述:要應(yīng)用 focusable 行為的元素。

代碼實(shí)例:

向小部件內(nèi)的一組元素應(yīng)用 focusable 樣式:

this._focusable( this.element.find( ".my-items" ) );
	
_getCreateEventData() Object 所有的小部件觸發(fā) create 事件。默認(rèn)情況下,事件中不提供任何的數(shù)據(jù),但是該方法會(huì)返回一個(gè)對(duì)象,作為 create 事件的數(shù)據(jù)被傳遞。
  • 該方法不接受任何參數(shù)。

代碼實(shí)例:

create 事件處理程序傳遞小部件的選項(xiàng),作為參數(shù)。

_getCreateEventData: function() {
  return this.options;
}
	
_getCreateOptions() Object 該方法允許小部件在初始化期間為定義選項(xiàng)定義一個(gè)自定義的方法。用戶提供的選項(xiàng)會(huì)覆蓋該方法返回的選項(xiàng),即會(huì)覆蓋默認(rèn)的選項(xiàng)。
  • 該方法不接受任何參數(shù)。

代碼實(shí)例:

讓小部件元素的 id 屬性作為選項(xiàng)可用。

_getCreateOptions: function() {
  return { id: this.element.attr( "id" ) };
}
	
_hide( element, option [, callback ] ) jQuery (plugin only) 使用內(nèi)置的動(dòng)畫(huà)方法或使用自定義的特效隱藏一個(gè)元素。如需了解可能的 option 值,請(qǐng)查看 hide。
  • element
    類(lèi)型:jQuery
    描述:要隱藏的元素。
  • option
    類(lèi)型:Object
    描述:定義如何隱藏元素的設(shè)置。
  • callback
    類(lèi)型:Function()
    描述:元素完全隱藏后要調(diào)用的回調(diào)。

代碼實(shí)例:

為自定義動(dòng)畫(huà)傳遞 hide 選項(xiàng)。

this._hide( this.element, this.options.hide, function() {
 
  // Remove the element from the DOM when it's fully hidden.
  $( this ).remove();
});
	
_hoverable( element ) jQuery (plugin only) 建立懸浮在元素上時(shí)要應(yīng)用 ui-state-hover class 的 element。事件處理程序在銷(xiāo)毀時(shí)自動(dòng)清理。
  • element
    類(lèi)型:jQuery
    描述:要應(yīng)用 hoverable 行為的元素。

代碼實(shí)例:

當(dāng)懸浮在元素上時(shí),向元素內(nèi)所有的 div 應(yīng)用 hoverable 樣式。

this._hoverable( this.element.find( "div" ) );
	
_init() jQuery (plugin only) 小部件初始化的理念與創(chuàng)建不同。任何時(shí)候不帶參數(shù)的調(diào)用插件或者只帶一個(gè)選項(xiàng)哈希的調(diào)用插件,初始化小部件。當(dāng)小部件被創(chuàng)建時(shí)會(huì)包含這個(gè)方法。

注釋:如果存在不帶參數(shù)成功調(diào)用小部件時(shí)要執(zhí)行的邏輯動(dòng)作,初始化只能在這時(shí)處理。

  • 該方法不接受任何參數(shù)。

代碼實(shí)例:

如果設(shè)置了 autoOpen 選項(xiàng),則調(diào)用 open() 方法。

_init: function() {
  if ( this.options.autoOpen ) {
    this.open();
  }
}
	
_off( element, eventName ) jQuery (plugin only) 從指定的元素取消綁定事件處理程序。
  • element
    類(lèi)型:jQuery
    描述:要取消綁定事件處理程序的元素。不像 _on() 方法,_off() 方法中元素是必需的。
  • eventName
    類(lèi)型:String
    描述:一個(gè)或多個(gè)空格分隔的事件類(lèi)型。

代碼實(shí)例:

從小部件的元素上取消綁定所有 click 事件。

this._off( this.element, "click" );
	
_on( [suppressDisabledCheck ] [, element ], handlers ) jQuery (plugin only) 授權(quán)通過(guò)事件名稱內(nèi)的選擇器被支持,例如 "click .foo"。_on() 方法提供了一些直接事件綁定的好處:
  • 保持處理程序內(nèi)適當(dāng)?shù)?this 上下文。
  • 自動(dòng)處理禁用的部件:如果小部件被禁用或事件發(fā)生在帶有 ui-state-disabled class 的元素上,則不調(diào)用事件處理程序??梢员?suppressDisabledCheck 參數(shù)重寫(xiě)。
  • 事件處理程序會(huì)自動(dòng)添加命名空間,在銷(xiāo)毀時(shí)會(huì)自自動(dòng)清理。
  • suppressDisabledCheck(默認(rèn)值:false
    類(lèi)型:Boolean
    描述:是否要繞過(guò)禁用的檢查。
  • element
    類(lèi)型:jQuery
    描述:要綁定事件處理程序的元素。如果未提供元素,this.element 用于未授權(quán)的事件,widget 元素 用于授權(quán)的事件。
  • handlers
    類(lèi)型:Object
    描述:一個(gè) map,其中字符串鍵代表事件類(lèi)型,可選的選擇器用于授權(quán),值代表事件調(diào)用的處理函數(shù)。

代碼實(shí)例:

放置小部件元素內(nèi)所有被點(diǎn)擊的鏈接的默認(rèn)行為。

this._on( this.element, {
  "click a": function( event ) {
    event.preventDefault();
  }
});
	
_setOption( key, value ) jQuery (plugin only) 為每個(gè)獨(dú)立的選項(xiàng)調(diào)用 _setOptions() 方法。小部件狀態(tài)隨著改變而更新。
  • key
    類(lèi)型:String
    描述:要設(shè)置的選項(xiàng)名稱。
  • value
    類(lèi)型:Object
    描述:為選項(xiàng)設(shè)置的值。

代碼實(shí)例:

當(dāng)小部件的 heightwidth 選項(xiàng)改變時(shí),更新小部件的元素。

_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 (plugin only) 當(dāng)調(diào)用 option() 方法時(shí)調(diào)用,無(wú)論以什么形式調(diào)用 option()。如果您要根據(jù)多個(gè)選項(xiàng)的改變而改變處理器密集型,重載該方法是很有用的。
  • options
    類(lèi)型:Object
    描述:為選項(xiàng)設(shè)置的值。

代碼實(shí)例:

如果小部件的 heightwidth 選項(xiàng)改變,調(diào)用 resize 方法。

_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 (plugin only) 使用內(nèi)置的動(dòng)畫(huà)方法或使用自定義的特效顯示一個(gè)元素。如需了解可能的 option 值,請(qǐng)查看 show
  • element
    類(lèi)型:jQuery
    描述:要顯示的元素。
  • option
    類(lèi)型:Object
    描述:定義如何顯示元素的設(shè)置。
  • callback
    類(lèi)型:Function()
    描述:元素完全顯示后要調(diào)用的回調(diào)。

代碼實(shí)例:

為自定義動(dòng)畫(huà)傳遞 show 選項(xiàng)。

this._show( this.element, this.options.show, function() {
 
  // Focus the element when it's fully visible.
  this.focus();
}
	
_super( [arg ] [, ... ] ) jQuery (plugin only) 從父部件中調(diào)用相同名稱的方法,帶有任意指定的參數(shù)。本質(zhì)上是 .call()
  • arg
    類(lèi)型:Object
    描述:要傳遞給父部件的方法的零到多個(gè)參數(shù)。

代碼實(shí)例:

處理 title 選項(xiàng)更新,并調(diào)用付部件的 _setOption() 來(lái)更新選項(xiàng)的內(nèi)部存儲(chǔ)。

_setOption: function( key, value ) {
  if ( key === "title" ) {
    this.element.find( "h3" ).text( value );
  }
  this._super( key, value );
}
	
_superApply( arguments ) jQuery (plugin only) 從父部件中調(diào)用相同名稱的方法,帶有參數(shù)的數(shù)組。本質(zhì)上是 .apply()。
  • arguments
    類(lèi)型:Array
    描述:要傳遞給父部件的方法的參數(shù)數(shù)組。

代碼實(shí)例:

處理 title 選項(xiàng)更新,并調(diào)用付部件的 _setOption() 來(lái)更新選項(xiàng)的內(nèi)部存儲(chǔ)。

_setOption: function( key, value ) {
  if ( key === "title" ) {
    this.element.find( "h3" ).text( value );
  }
  this._superApply( arguments );
}
	
_trigger( type [, event ] [, data ] ) Boolean 觸發(fā)一個(gè)事件及其相關(guān)的回調(diào)。帶有該名稱的選項(xiàng)與作為回調(diào)被調(diào)用的類(lèi)型相等。

事件名稱是小部件名稱和類(lèi)型的小寫(xiě)字母串。

注釋:當(dāng)提供數(shù)據(jù)時(shí),您必須提供所有三個(gè)參數(shù)。如果沒(méi)有傳遞事件,則傳遞 null。

如果默認(rèn)行為是阻止的,則返回 false,否則返回 true。當(dāng)處理程序返回 false 時(shí)或調(diào)用 event.preventDefault() 時(shí),則阻止默認(rèn)行為發(fā)生。

  • type
    類(lèi)型:String
    描述:type 應(yīng)該匹配回調(diào)選項(xiàng)的名稱。完整的事件類(lèi)型會(huì)自動(dòng)生成。
  • event
    類(lèi)型:Event
    描述:導(dǎo)致該事件發(fā)生的原始事件,想聽(tīng)眾提供上下文時(shí)很有用。
  • data
    類(lèi)型:Object
    描述:一個(gè)與事件相關(guān)的數(shù)據(jù)哈希。

代碼實(shí)例:

當(dāng)按下一個(gè)鍵時(shí),觸發(fā) search 事件。

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 (plugin only) 完全移除小部件功能。這會(huì)把元素返回到它的預(yù)初始化狀態(tài)。
  • 該方法不接受任何參數(shù)。

代碼實(shí)例:

當(dāng)點(diǎn)擊小部件的任意錨點(diǎn)時(shí)銷(xiāo)毀小部件。

this._on( this.element, {
  "click a": function( event ) {
    event.preventDefault();
    this.destroy();
  }
});
	
disable() jQuery (plugin only) 禁用小部件。
  • 該方法不接受任何參數(shù)。

代碼實(shí)例:

當(dāng)點(diǎn)擊小部件的任意錨點(diǎn)時(shí)禁用小部件。

this._on( this.element, {
  "click a": function( event ) {
    event.preventDefault();
    this.disable();
  }
});
	
enable() jQuery (plugin only) 啟用小部件。
  • 該方法不接受任何參數(shù)。

代碼實(shí)例:

當(dāng)點(diǎn)擊小部件的任意錨點(diǎn)時(shí)啟用小部件。

this._on( this.element, {
  "click a": function( event ) {
    event.preventDefault();
    this.enable();
  }
});
	
option( optionName ) Object 獲取當(dāng)前與指定的 optionName 關(guān)聯(lián)的值。
  • optionName
    類(lèi)型:String
    描述:要獲取的選項(xiàng)的名稱。

代碼實(shí)例:

獲得 width 選項(xiàng)的值。

this.option( "width" );
	
option() PlainObject 獲取一個(gè)包含鍵/值對(duì)的對(duì)象,鍵/值對(duì)表示當(dāng)前小部件選項(xiàng)哈希。
  • 該方法不接受任何參數(shù)。

代碼實(shí)例:

記錄每個(gè)小部件選項(xiàng)的鍵/值對(duì),用于調(diào)試。

var options = this.option();
for ( var key in options ) {
  console.log( key, options[ key ] );
}
	
option( optionName, value ) jQuery (plugin only) 設(shè)置與指定的 optionName 關(guān)聯(lián)的小部件選項(xiàng)的值。
  • optionName
    類(lèi)型:String
    描述:要設(shè)置的選項(xiàng)的名稱。
  • value
    類(lèi)型:Object
    描述:要為選項(xiàng)設(shè)置的值。

代碼實(shí)例:

設(shè)置 width 選項(xiàng)為 500。

this.option( "width", 500 );
	
option( options ) jQuery (plugin only) 為小部件設(shè)置一個(gè)或多個(gè)選項(xiàng)。
  • options
    類(lèi)型:Object
    描述:要設(shè)置的 option-value 對(duì)。

代碼實(shí)例:

設(shè)置 heightwidth 選項(xiàng)為 500

this.option({
  width: 500,
  height: 500
});
	
widget() jQuery 返回一個(gè)包含原始元素或其他相關(guān)的生成元素的 jQuery 對(duì)象。
  • 該方法不接受任何參數(shù)。

代碼實(shí)例:

當(dāng)創(chuàng)建小部件時(shí),在小部件的原始元素周?chē)胖靡粋€(gè)紅色的邊框。

_create: function() {
  this.widget().css( "border", "2px solid red" );
}
	

事件 類(lèi)型 描述
create( event, ui ) widgetcreate 當(dāng)小部件被創(chuàng)建時(shí)觸發(fā)。
  • event
    類(lèi)型:Event
  • ui
    類(lèi)型:Object

注意:ui 對(duì)象是空的,這里包含它是為了與其他事件保持一致性。

代碼實(shí)例:

初始化帶有指定 create 回調(diào)的小部件:

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

綁定一個(gè)事件監(jiān)聽(tīng)器到 widgetcreate 事件:

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