特定の状態のコードが実行されているため、現在の状態 (最大化/最小化) は既にわかっています。another_function
したがって、この情報を引数として単純に渡すことができます。
$('button').toggle(function() {
// case 1: maximize
// ...
another_function($(this), 'maximize');
}, function() {
// case 2: minimize
// ...
another_function($(this), 'minimize');
});
更新: jQuery の内部状態を掘り下げる
jQuery は現在 (1.7.2) メカニズムへのプライベート バックドアを使用して.data()
、トグルの状態を保存します。このバックドアは、jQuery ソース内で明示的に非公開とマークされており、言うまでもなく、以下の内容は予告なしに変更される可能性があります。したがって、この道をたどらないことを強くお勧めします。
そうは言っても、ここで何が起こっているのですか:
$._data()
jQuery は、トグルの現在のクリック数を格納するためにアクセスされるプライベート データ スペースを使用します。このクリック カウント モジュロ 2 は、実行する関数を決定するために使用され、クリックごとに増分されます。
現在、このデータを格納するために使用されるキーは string"lastToggle" + guid
です。ここで、guid
は通常、jQuery によっても自動生成される値です (グローバル インクリメント カウンターを使用)。の値はguid
トグル ハンドラー関数で設定され、次のようにトグルを設定した後に取得できます。
var f1 = function() {
// case 1: maximize
// ...
another_function($(this), 'maximize');
}, f2 = function() {
// case 2: minimize
// ...
another_function($(this), 'minimize');
};
$('button').toggle(f1, f2);
// guid is now available on both handlers:
console.log(f1.guid, f2.guid);
guid
を呼び出す前に最初のハンドラーに設定することで、 の値を修正することもできますtoggle
。
var f1 = function() {
// case 1: maximize
// ...
another_function($(this), 'maximize');
}, f2 = function() {
// case 2: minimize
// ...
another_function($(this), 'minimize');
};
f1.guid = "foo";
$('button').toggle(f1, f2);
// guid is now fixed to "foo" and available on both handlers:
console.log(f1.guid, f2.guid);
このハンドルを指定すると、これまでのクリック数を取得できます (したがって、次にどのハンドラーが呼び出されるかを予測できます)。
$._data($('button'), "lastToggle" + guid);