jQuery UIの仕組み


jQuery UI には状態を維持するウィジェットが多数含まれているため、一般的な jQuery プラグインの使用パターンとは少し異なります。インストール方法は、ほとんどの jQuery プラグインと同様です。jQuery UI のウィジェットは、共通の API を提供する Widget Factory に基づいて作成されます。したがって、1 つのウィジェットの使い方を覚えれば、他のウィジェットの使い方もわかります。このチュートリアルでは、プログレスバー ウィジェットのコード例を通じて一般的な機能を紹介します。

インストール

ウィジェットのステータスを追跡するために、まずウィジェットの完全なライフサイクルを紹介します。ライフサイクルは、ウィジェットがインストールされたときに始まります。 1 つ以上の要素でプラグインを呼び出すだけで済みます。つまり、ウィジェットがインストールされています。

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

これにより、jQuery オブジェクトの各要素が初期化されます。この場合、要素 ID は「elem」です。 .progressbar() メソッドをパラメーターなしで呼び出すため、ウィジェットはデフォルトのオプションで初期化されます。インストール中に、デフォルトのオプションをオーバーライドする一連のオプションを渡すことができます。 .progressbar() 方法,小部件则会按照它的默认选项进行初始化。我们可以在安装时传递一组选项,这样既可重写默认选项。

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

安装时传递的选项数目多少可根据我们的需要而定。任何我们未传递的选项则都使用它们的默认值。

选项是小部件状态的组成部分,所以我们也可以在安装后再进行设置选项。我们将在后续的 option 方法中介绍这部分内容。

方法

既然小部件已经初始化,我们就可以查询它的状态,或者在小部件上执行动作。所有初始化后的动作都以方法调用的形式进行。为了在小部件上调用一个方法,我们可以向 jQuery 插件传递方法的名称。例如,为了在进度条(progressbar)小部件上调用 value 方法,我们应该使用:

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

如果方法接受参数,我们可以在方法名后传递参数。例如,为了传递参数 40value 方法,我们可以使用:

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

就像 jQuery 中的其他方法一样,大部分的小部件方法为链接返回 jQuery 对象。

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

公共的方法

每个小部件都有它自己的一套基于小部件所提供功能的方法。然而,有一些方法是所有小部件都共同具有的。

option

正如我们前面所提到的,我们可以在初始化之后通过 option 方法改变选项。例如,我们可以通过调用 option 方法改变 progressbar(进度条)的 value 为 30。

$( "#elem" ).progressbar( "option", "value", 30 );

请注意,这与之前我们调用 value 方法的实例有所不同。在本实例中,我们调用 option 方法,改变 value 选项为 30。

我们也可以为某个选项获取当前的值。

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

另外,我们可以通过给 option

$( "#elem" ).progressbar( "option", {
    value: 100,
    disabled: true
});

インストール中に渡されるオプションの数は、ニーズに応じて決定できます。渡さないオプションにはデフォルト値が使用されます。 🎜🎜 オプションはウィジェットの状態の一部であるため、インストール後にオプションを設定することもできます。この部分は、後続の option メソッドで紹介します。 🎜🎜メソッド🎜🎜 ウィジェットが初期化されたので、ステータスをクエリしたり、ウィジェット上でアクションを実行したりできます。初期化後のすべてのアクションはメソッド呼び出しの形式で実行されます。ウィジェットのメソッドを呼び出すために、メソッドの名前を jQuery プラグインに渡すことができます。たとえば、プログレスバー ウィジェットで value メソッドを呼び出すには、以下を使用する必要があります: 🎜
$( "#elem" ).progressbar( "disable" );
🎜 メソッドがパラメータを受け入れる場合は、メソッド名の後にパラメータを渡すことができます。たとえば、パラメータ 40value メソッドに渡すには、次のように使用できます。 🎜
$( "#elem" ).progressbar( "enable" );
🎜 jQuery の他のメソッドと同様、ほとんどのウィジェット メソッドはリンク オブジェクトの jQuery を返します。 🎜
$( "#elem" ).progressbar( "destroy" );

パブリック メソッド

🎜 各ウィジェットには、ウィジェットによって提供される機能に基づいた独自のメソッド セットがあります。ただし、すべてのウィジェットに共通のメソッドがいくつかあります。 🎜

option

🎜 前に述べたように、option メソッドを使用して初期化後にオプションを変更できます。たとえば、option メソッドを呼び出すことで、プログレスバーの値を 30 に変更できます。 🎜
$( "#elem" ).progressbar( "widget" );
🎜これは、 value メソッドを呼び出した前のインスタンスとは異なることに注意してください。この例では、option メソッドを呼び出し、値オプションを 30 に変更します。 🎜🎜オプションの現在の値を取得することもできます。 🎜
$( "#elem" ).bind( "progressbarchange", function() {
    alert( "The value has changed!" );
});
🎜 さらに、オブジェクトを option メソッドに渡すことで、複数のオプションを一度に更新できます。 🎜
$( "#elem" ).progressbar({
    change: function() {
        alert( "The value has changed!" );
    }
});

option メソッドには、.css().attr( )< など、jQuery コードのゲッターやセッターと同じフラグがあることに気づくかもしれません。 /コード>。唯一の違いは、最初の引数として文字列「option」を渡す必要があることです。 option 方法有着与 jQuery 代码中取值器和设置器相同的标志,就像 .css().attr()。唯一的不同就是您必须传递字符串 "option" 作为第一个参数。

disable

disable 方法禁用小部件。在进度条(progressbar)实例中,这会改变样式让进度条显示为禁用状态。

rrreee

调用 disable 方法等同于设置 disabled 选项为 true

enable

enable 方法是 disable 方法的对立面。

rrreee

调用 enable 方法等同于设置 disabled 选项为 false

destroy

如果您不再需要小部件,那么可以销毁它,返回到最初的标记。这意味着小部件生命周期的终止。

rrreee

一旦您销毁了一个小部件,您就不能在该部件上调用任何方法,除非您再次初始化这个小部件。如果您要移除元素,可以直接通过 .remove(),也可以通过 .html().empty() 修改祖先,小部件会自动销毁。

widget

一些小部件生成包装器元素,或与原始元素断开连接的元素。在下面的实例中,widget 将返回生成的元素。在进度条(progressbar)实例中,没有生成的包装器,widget 方法返回原始的元素。

rrreee

事件

所有的小部件都有跟他们各种行为相关的事件,用于在状态改变时通知您。对于大多数的小部件,当事件被触发时,名称以小部件名称为前缀。例如,我们可以绑定进度条()的 change 事件,一旦值发生变化时就触发。

rrreee

每个事件都有一个相对应的回调,作为选项进行呈现。我们可以使用进度条(progressbar)的 change 回调,这等同于绑定 progressbarchange 事件。

rrreee

公共的事件

大多数事件是针对特定的小部件,所有的小部件都有一个公共的 create

disable

disable メソッドはウィジェットを無効にします。プログレスバーのインスタンスでは、プログレスバーが無効に表示されるようにスタイルが変更されます。
rrreee🎜 disable メソッドを呼び出すことは、disabled オプションを true に設定することと同じです。 🎜

enable

🎜 enable メソッドは、disable メソッドの逆です。 🎜rrreee🎜 enable メソッドを呼び出すことは、disabled オプションを false に設定することと同じです。 🎜

destroy

🎜 ウィジェットが不要になった場合は、ウィジェットを破棄して元のマークアップに戻すことができます。これは、ウィジェットのライフサイクルの終了を意味します。 🎜rrreee🎜 ウィジェットを破棄すると、再度初期化しない限り、そのウィジェットのメソッドを呼び出すことはできません。要素を削除したい場合は、.remove() を介して直接削除することも、.html() または .empty を介して祖先を変更することもできます。 () を指定すると、ウィジェットは自動的に破棄されます。 🎜

ウィジェット

🎜一部のウィジェットは、ラッパー要素、つまり元の要素から切り離された要素を生成します。以下の例では、widget は生成された要素を返します。プログレスバー インスタンスでは、生成されたラッパーはなく、widget メソッドは元の要素を返します。 🎜rrreee

イベント

🎜すべてのウィジェットには、ステータスが変化したときに通知する、さまざまな動作に関連するイベントがあります。ほとんどのウィジェットでは、イベントが発生すると、名前の前にウィジェット名が付加されます。たとえば、progress bar() の変更イベントをバインドして、値が変更されたときにイベントをトリガーできます。 🎜rrreee🎜各イベントには対応するコールバックがあり、オプションとして表示されます。プログレスバーの change コールバックを使用できます。これは、progressbarchange イベントをバインドするのと同じです。 🎜rrreee

パブリック イベント

🎜ほとんどのイベントは特定のウィジェット用であり、すべてのウィジェットにはパブリック create イベントがあります。このイベントは、ウィジェットの作成時に発生します。 🎜🎜