将更改的 jQuery 变量存储到会话或本地存储
Store a changing jQuery variable to session or local storage
我目前有以下jQuery代码在工作。 它是这样做的:当我单击一个按钮时,它将在类之间交换。 其中每个类都包含一个背景图像。 因此,当我单击这个按钮时,它会在背景图像中循环。 (编辑:我只需要存储当前变量是什么,所以当他们交换页面时,该变量就是加载的)。
$('.button').mousedown(function () {
$('#backgrounds').each(function(){
var classes = ['bg1','bg2','bg3','bg4'];
this.className = classes[($.inArray(this.className, classes)+1)%classes.length];
});
});
但是,我的网站有多个页面。 因此,我需要做的是将当前变量存储到会话存储或本地存储中,然后在页面加载时检索该变量。 这样,当我从一个页面跳到另一个页面时,将显示相同的类(因此显示背景图像)。 我不需要(也不想)使用 cookie - 我只需要这个来持续当前会话。
此外,如果可能的话(虽然远不如存储变量重要),我还希望这个 jQuery 函数在从一个背景图像交换到另一个背景图像时整齐地淡入淡出。 现在,它在交换类时从一个图像"捕捉"到下一个图像。
提前感谢 - 任何帮助都非常感谢!
对单个会话使用 Window.sessionStorage
API。
只需通过从sessionStorage
获取值(如果适用)进行设置(如果没有,请设置默认值):
var classes = sessionStorage.getItem(classes) || ['bg1','bg2','bg3','bg4'];
并在需要时进行设置:
sessionStorage.setItem("classes", classes);
选择器#backgrounds
应仅匹配一个元素。所以没有必要使用each
:
// Define classes & background element.
var classes = ['bg1','bg2','bg3','bg4'],
$bg = document.getElementById('backgrounds');
// On first run:
$bg.className = sessionStorage.getItem('currentClass') || classes[0];
// On button click:
$('.button').mousedown(function () {
// (1) Get current class of background element,
// find its index in "classes" Array.
var currentClassIndex = classes.indexOf($bg.className);
// (2) Get new class from list.
var nextClass = classes[(currentClassIndex + 1)%classes.length];
// (3) Assign new class to background element.
$bg.className = nextClass;
// (4) Save new class in sessionStorage.
sessionStorage.setItem('currentClass', nextClass);
});
在这个演示中,我使用 getElementById
来选择 #backgrounds
DOM 元素,而不是使用 jQuery 选择它。这是因为 jQuery 元素表示实际上没有 className
属性,在这种情况下,普通的 JavaScript API 更简单。
相关文章:
- '会话'未定义-会话存储的Este JS/Express/Redis
- 当会话存储阵列中存在大量元素时,如何从中删除元素
- 使用会话Javascript存储数据
- Django会话与浏览器本地存储
- C#/Javascript会话存储
- 将会话登录页存储在cookie中以进行表单解析(通过隐藏字段)
- Javascript 会话存储变量未正确保存
- 不会删除会话存储
- Meteor会话变量未存储数组
- 如何改进此会话存储命名系统/for循环
- 测试本地存储/会话存储最大数据量
- 在 javascript var 中存储会话变量时脚本停止
- 会话节点.js + 护照.js + Redis,按 user.id 存储会话
- 烧瓶:如何手动存储会话数据
- 为什么在php脚本中存储会话数据会干扰Ajax脚本
- Java -如何使用gson库解析json响应+存储会话id,以便它可以被gae中的javascript函数访问
- 多个HTTP客户端请求不存储会话数据
- 存储会话的复选框信息
- 在表单提交时存储会话
- 使用node - js和“connect-mongostore”存储会话