コールバックオブジェクトを生成します。コールバックオブジェクトには add() でコールバック関数を追加し、fire() で呼び出します。
function fn1(value) {
alert("fn1:" + value);
}
function fn2(value) {
alert("fn2:" + value);
}
var cb1 = $.Callbacks();
cb1.add(fn1);
cb1.add(fn2);
cb1.fire("Hello!"); // Call fn1("Hello!") and fn2("Hello!")
flags にはオプション文字列を空白で区切って指定します。once は一度のみ fire() することが可能です。memory は add() の際に最後に fire() した引数で add() したコールバックを呼び出します。unique は同じ関数を2回以上重複して add() できないよう制限します。stopOnFalse はコールバック関数が false を返した時点で残りのコールバック関数の呼び出しをスキップします。
var cb1 = $.Callbacks("unique stopOnFalse");
コールバックオブジェクトにコールバック関数を追加します。
function fn1(value) { alert("fn1:" + value); } var cb1 = $.Callbacks(); cb1.add(fn1);
コールバックオブジェクトからコールバック関数を削除します。
var cb1 = $.Callbacks(); cb1.add(fn1); cb1.add(fn2); cb1.remove(fn2);
コールバックオブジェクトからすべてのコールバック関数を削除します。
var cb1 = $.Callbacks(); cb1.add(fn1); cb1.add(fn2); cb1.add(fn3); cb1.empty();
コールバックオブジェクト中にコールバック関数が追加されているか否かを true / false で返します。
var cb1 = $.Callbacks(); cb1.add(fn1); cb1.add(fn2); if (cb1.has(fn2)) { alert("Included!"); }
コールバックオブジェクトに登録されたコールバック関数を呼び出します。
function fn1(arg1, arg2) { alert("fn1:" + arg1 + ":" + arg2); } var cb1 = $.Callbacks(); cb1.add(fn1); cb1.fire("Hello!", "Bye!");
コールバック関数内で this で参照される要素を context に指定してコールバック関数を呼び出します。
function fn1(arg1, arg2) { alert("fn1:" + $(this).attr("id") + ":" + arg1 + ":" + arg2); } var cb1 = $.Callbacks(); cb1.add(fn1); cb1.fireWith($("#d1"), ["Hello!", "Bye!"]);
コールバックオブジェクトが一度でも fire()/fireWith() されたか否かを true / false で返します。
var cb1 = $.Callbacks(); cb1.add(fn1); cb1.fire(); if (cb1.fired()) { alert("Called"); }
コールバックオブジェクトを無効状態にします。
var cb1 = $.Callbacks(); cb1.add(fn1); cb1.fire(); // 呼び出せます cb1.disable(); cb1.fire(); // 呼び出しが無視されます
コールバックオブジェクトが無効状態にあるかを true / false で返します。
var cb1 = $.Callbacks(); cb1.add(fn1); cb1.disable(); if (cb1.disabled()) { alert("Disabled!"); }
fire() / fireWith() による呼び出しを無効化します。ただし、memory が指定されていた場合は、add() による呼び出しは行われます。
function fn1(arg) { $("#log").append("fn1 : " + arg + "<br>"); } function fn2(arg) { $("#log").append("fn2 : " + arg + "<br>"); } var cb1 = $.Callbacks("memory"); cb1.add(fn1); cb1.fire("Fire1"); cb1.lock(); cb1.fire("Fire2"); // 呼ばれない cb1.add(fn2); // fn2("Fire2") が呼ばれる
コールバックオブジェクトがロック状態にあるかを true / false で返します。
var cb1 = $.Callbacks(); cb1.add(fn1); cb1.lock(); if (cb1.locked()) { alert("Locked!"); }