2

onchange コールバックを登録する次の例を考えてみましょう。

function appendToSaveArray(field)
{
    saveArray[field.attr("id")] = field.attr("value");
}

$('#fields input').change(appendToSaveArray);

アイデアは、いくつかのテキスト入力に加えられた最後の変更を配列に保存することです。入力の 1 つの値を変更すると (そしてドキュメントの別の要素にフォーカスを切り替えると)、関数appendToSaveArrayが呼び出されます。ただし、引数fieldには、変更がトリガーされた入力要素が含まれていません。これは私が期待していたものです。関数内からappendToSaveArray、どの入力がイベントをトリガーしたかを知るにはどうすればよいですか?

4

3 に答える 3

3

changeイベント ハンドラー内で、thisイベントがトリガーされた入力を参照します。次のコマンドを使用して、その値を直接取得できますthis.value

function appendToSaveArray()
{
    saveArray[this.id] = this.value;
}

$('#fields input').change(appendToSaveArray);

デモ

于 2012-08-25T15:26:28.940 に答える
1

fieldコード内の には、イベント オブジェクトが含まれています。あなたの関数では、$(this)代わりに使用してください。

また、匿名関数を使用して、このコードをワンライナーとして簡略化できることにも注意してください。

$('#fields input').click(function () { saveArray[$(this).attr('id')] = $(this).val(); });
于 2012-08-25T15:27:34.910 に答える
1

fieldイベントに等しく、イベントターゲットも格納されます。要素が変更されました:

function appendToSaveArray(field) {
    saveArray[field.target.id] = field.target.value;
}

$('#fields input').on('change', appendToSaveArray);​

フィドル

于 2012-08-25T15:30:26.203 に答える