1

いくつかの選択があり、それらが値を変更すると、新しい値をWindowsのローカルストレージに保存します。すべての関数が同じロジックを繰り返します。この 3 つを 1 つにまとめる方法はありますか。Windows のローカル ストレージ名は常に、select の要素 ID と同じであることに注意してください。

var store = window.localStorage;

$('#AccountID')
   .change(function () {
       store.setItem('AccountID', $(this).val());
    });

$('#ExamID')
   .change(function () {
       store.setItem('ExamID', $(this).val());
    });

$('#PageID')
   .change(function () {
       store.setItem('PageID', $(this).val());
    });
4

4 に答える 4

3

試す

$('#AccountID, #ExamID,#PageID')
   .change(function () {store.setItem($(this).attr('id'), $(this).val());
    });
于 2012-05-20T14:24:34.017 に答える
2

次のように、ローカル ストレージのキーとして要素の ID を使用して、これを簡単に短縮できます。

var store = window.localStorage;

$('#AccountID, #ExamID, #PageID').change(function() {
  store.setItem(this.id, $(this).val());
});
于 2012-05-20T14:23:19.620 に答える
2

これを行う最も簡単な方法は、追跡するすべての要素に CSS クラスを割り当ててから、単一のイベント ハンドラーをバインドすることだと思います。

var store = window.localStorage;

$('select.tracked').change(function(){
    store.setItem($(this).attr('id'), $(this).val());
});

必要に応じてセレクターを調整して、追跡したい要素のタイプに一致させます。:input

于 2012-05-20T14:25:00.187 に答える
1

私はこれを単純化しすぎているかもしれません(私がいつもそうしているように:)

しかし、これはいくつかの助けになるかもしれません-

$('#AccountID')
   .change(function () {
       store.setItem($(this).attr('id'), $(this).val());
    });

$(this).val()現在の要素の値を抽出するために使用するのと同じ方法で、 を使用して現在の要素$(this).attr('id')の を取得し、idそれをローカル ストレージのキーとして使用できます...

したがって、セレクターをより汎用的にするには、すべての選択要素の.change()イベントをキャプチャするだけです-

$('select')
   .change(function () {
       store.setItem($(this).attr('id'), $(this).val());
    });

それがあなたにとって少し広すぎる場合は、常に関連する選択要素に一致するクラスを与えるか、1 つのセレクターですべての選択要素を指定することもできます-

$('#AccountID, #ExamID, #PageID, #anotherSelect, #...')

于 2012-05-20T14:22:58.987 に答える