-1

HTML入力要素を作成する汎用JavaScriptクラスがあります。このコードでは、jQuery の change メソッドを使用して、要素の値が変更されるたびに呼び出される文字列として関数を渡すことができます。私は次のコードを使用しています:

1.  var changeFunction = "runThisCode()";
2.  
3.  var elem = $("<input/>").attr(id: someID, type: "text", size: 20);
4.  elem.change(function () {
5.     var fn = new Function(changeFunction);
6.     fn();
7.  });

change 関数で要素の ID を渡したいと思います。5 行目または 6 行目にパラメーターを追加する方法はありますか?

4

3 に答える 3

1

Function作成された関数本体で使用できる引数名を指定できます。jsfiddle

1.  var changeFunction = "runThisCode(id)";
2.  
3.  var elem = $("<input/>").attr(id: someID, type: "text", size: 20);
4.  elem.change(function () {
5.     var fn = new Function("id", changeFunction);
6.     fn(someID);
7.  });
于 2012-11-15T18:04:34.367 に答える
0
var changeFunction = runThisCode;

var elem = $("<input/>").attr(id: someID, type: "text", size: 20);
elem.change(function () {
    changeFunction(this.id);
});

本当。関数を変数に格納するために文字列を使用する必要はありません。これは悪いことであり、先ほど示した解決策はうまく機能します。

実際、コードが実際に示されている順序である場合は、次のことを実行できます。

var elem = $("<input/>").attr(id: someID, type: "text", size: 20);
elem.change(runThisCode);

function runThisCode() {
    // 'this.id' gives you the ID.
    // And so does 'someID'.
}
于 2012-11-15T18:07:25.420 に答える
0

なぜこれだけではないのですか?

var changeFunction = "runThisCode";
var elem = $("<input/>").attr(id: someID, type: "text", size: 20);
elem.change(function () { window[changeFunction](this.id) });

このように changeFunction を直接持つことができない場合は、そうすることができます

var changeFunction = changeFunction.slice(0, -2);

かっこを削除します。

于 2012-11-15T18:24:18.543 に答える