1

我有许多选择,当它们更改值时,我将新值存储在 Windows 本地存储中。我所有的功能都重复相同的逻辑。有什么方法可以将这三者合二为一。注意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());
    });

如果这对您来说有点过于宽泛,您始终可以为您的相关选择元素匹配类,甚至在一个选择器中指定所有选择元素 -

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

于 2012-05-20T14:22:58.987 回答