0

さまざまなアラート メッセージをトリガーするさまざまなアンカー タグと入力ボタンがあります。アラート メッセージは、既に関数として構築されています。トリガーにはさまざまなクラスがあります。これらの各トリガーが個々の関数を起動するように、個別のスクリプトを作成しました。現在、適切なアラート メッセージ関数を適切なトリガー クラスに動的にアタッチする関数を構築することで、このプロセスを合理化しようとしています。

各トリガーのすべてのクラスをロードできる allTriggers 変数 (以下を参照) を作成しました。

var allTriggers = $('.firstColumn a, .uploadAttachment, .tabGroup .tab a, .checkForChanges')

いいえ、ここが私が苦労している部分です。適切なトリガーに適切なアラート メッセージ (機能) を付加する機能を構築したい

つまり...

allTriggers の値 = クラス .uploadAttachment のトリガーの場合、関数 uploadFunction を実行します。

allTriggers の値がクラス .firstColumn a のトリガーである場合、関数 removeMessageFunction を実行します。

等々。

プログラマーが後で来て、この単純な変数と関数に必要に応じてトリガーとアラートを追加できるように、これを行いたいと思っています。これにより、既に作業している残りのスクリプトの空白が埋められます。

私が取り組んでいる機能は、以下のようなものですが、これは機能していません

function popupOKFunction() {
        if (allTriggers == '.firstColumn a') {
                removeMessageFunction ();
        }
        if (allTriggers == '.uploadAttachment') {
                uploadFunction ();
        } 
}
4

1 に答える 1

0

JavaScript に関する 2 つの事実を使用できます。1) オブジェクトのプロパティの名前として (ほとんど) 任意の文字列を使用できます。2) 関数は第一級市民であり、ほとんどの値と同じように (再び - ほとんど) 使用できます。

したがって、あなたにとって役立つのは関数ではなく、オブジェクトです。

var controlHandlers = {
  '.firstColumn a': removeMessageFunction,
  '.uploadAttachment': uploadFunction,
  ...
};

...次に、次のようなものでそれを繰り返すことができます...

for (var selector in controlHandlers) {
   $(selector).click(controlHandlers[selector]);  
}

更新:最終的に単一の関数のみを使用することを決定した場合、同じアプローチが役立ちますが、異なるメッセージが表示されます: これらのメッセージは、この関数で param として送信されます。このような:

var controlMessages = {
  '.firstColumn a': "Do not ever touch this link! Ever!",
  '.uploadAttachment': "Now I'm angry!",
};
...
for (var selector in controlMessages) {
  $(selector).click(function() { 
    alertingFunction(controlMessages[selector]);
  });
}

alertingFunctionこの場合、単一のパラメーター (表示されるメッセージ) を取るように定義する必要があります。

于 2012-06-24T01:26:56.237 に答える