1

これは以前に尋ねられたと確信していますが、何を検索すればよいかわかりません。

したがって、クリックされたアイテムに対応する文字列で関数を呼び出したいのですが、新しいアイテムを文字列の配列に追加するだけです。

var menuList = ["overview", "help", "search"];
var functionCalls = [
  function() { toggleMenu(menuList[0]); },
  function() { toggleMenu(menuList[1]); },
  function() { toggleMenu(menuList[2]); },
];

これは、ループで次のように使用されます。$("something").click(functionCalls[i])

これは私がやりたいことです(しかし、明らかにうまくいきません):

for (var i in menuList) {

  // This does not work because the closure references 'i'
  // which, at the end, is always the index of the last element
  $("something").click(function() {
    toggleMenu(menuList[i]);
  });

  // this works, but I have to define each closure
  $("something").click(functionCalls[i]);
}

変数に基づいて値を受け入れるが、変数への参照を保持しない無名関数を作成するにはどうすればよいですか?

4

1 に答える 1