デザイナーにも分かりやすいjQuery入門講座|jQueryの使い方

このエントリーをはてなブックマークに追加
索引
Core:コアとなる仕組み
Selectors:セレクタ
Attributes:属性
Traversing:対象の変更
Manipulation:操作
CSS:スタイルシート
Events:イベント
Effects:演出効果
Ajax:xml等との連携
Utilities:ユーティリティ
Data:データ
Miscellaneous:諸々
Deferred:処理管理
Callbacks:コールバック
Internals:内部処理

callbacks.lock( )コールバックのロック

構文

コールバックのロック返値:callbacksオブジェクト
callbacks.lock( )ver1.7〜

機能

コールバックをロックします(現在の状態が変わらないようにします)。そしてcallbacks.fireメソッドcallbacks.fireWithメソッドを利用しても登録されたfunctionが実行できなくなります。

解説

コールバックをロックします

サンプル(lock/01.html)を開いてbody内に2つのbutton要素(id属性はfireとlock)があることを確認してください。jQueryでは、まず以下の部分を確認してください。callbacks.addメソッドを利用してコールバックのリストにtestFuncを追加しています。
testFuncはappendメソッドを利用してbody内に「hello」と表示します。

var myCall = $.Callbacks();
myCall.add(testFunc);
function testFunc(){
	$("body").append("hello");
};

続いて以下の部分を確認してください。id属性がfireのbuttonをクリックするとcallbacks.fireメソッドを利用してコールバックに登録されたtestFuncを実行します。

$("button#fire").click(function(){
	myCall.fire();
});

実際にfireボタンをクリックすると、body要素に「hello」と追加されます。

続いて、以下の部分を確認してください。id属性がlockのbuttonをクリックするとcallbacks.lockメソッドによって、コールバックがロックされます。

$("button#lock").click(function(){
	myCall.lock();
});

結果としてlockボタンをクリックすると、fireボタンをクリックしても「hello」が追加されなくなります。

関連項目

callbacks.disableメソッドとの違いがよく分かりません...。

メモ

ロックを解除する方法は?

本家サイトにロックを解除する方法が記述されていません。
解除できなかったら、機能的にcallbacks.emptyメソッドと同じなのでは?