1

さまざまな要素に対して複数の関数を備えた複数のイベントリスナーを1行で追加できるようにするものはありますか、またはすでにありますか? 多分例は私が説明するのを助けるでしょう...

コードで次のような状況に遭遇しています。

inputUrl.addEventListener ('keydown', saveOptions);
inputUrl.addEventListener ('keydown', resizeInput);

inputUrl.addEventListener ('keyup', saveOptions);
inputUrl.addEventListener ('keyup', resizeInput);

inputUrl.addEventListener ('click', saveOptions);
inputUrl.addEventListener ('click', resizeInput);

inputDirectory.addEventListener ('keydown', saveOptions);
inputDirectory.addEventListener ('keydown', resizeInput);

inputDirectory.addEventListener ('keyup', saveOptions);
inputDirectory.addEventListener ('keyup', resizeInput);

inputDirectory.addEventListener ('click', saveOptions);
inputDirectory.addEventListener ('click', resizeInput);

コードを短くするために、これに沿って何かを持っていると非常に良いかもしれません!

makeEvents("inputUrl,inputDirectory|saveOptions,resizeInput|keydown,keyup,click")

これが理にかなっていることを願っています。何か案は?このようなものがすでに存在する場合、私は知りたいです。それ以外の場合は、文字列を分割し、要素ごとに関数ごとに各イベントを添付するヘルパー関数 (makeEvents などと呼ばれる) を作成できますか?

現時点では、既存のコード ロジックが完全に意味をなさないことはわかっていますが、これが簡単に実行できるか、または既に存在するかどうかに最も興味があります。

4

3 に答える 3

3

次のことを試してください。

inputUrl.addEventListener ('keyup', function() { saveOptions(); resizeInput(); });

このようにして、「keyup」イベントは両方の関数を呼び出し、それらが呼び出される順序をより細かく制御できます。

于 2012-09-24T19:25:34.190 に答える
2

jqueryは複数のイベントを複数の要素にバインドできます

$(inputUrl).add(inputDirectory).bind("keydown, keyup, click", function(){
     resizeInput(this);     
     saveOptions(this);
});
于 2012-09-24T19:27:15.203 に答える
1

幸運なことに、誰かが関数を発明しました

function setupEvents(element, action)
{
    element.addEventListener("keydown", action);
    element.addEventListener("keyup", action);
    element.addEventListener("click", action);
}

function setupActions(element)
{
    setupEvents(element, saveOptions);
    setupEvents(element, resizeInput);
}

setupActions(inputUrl);
setupActions(inputDirectory);
于 2012-09-24T19:21:11.493 に答える