jQuery实现本地存储

下面是详细的讲解:

什么是本地存储?

在Web开发中,常常需要将一些数据保存在客户端内,这些数据可能会被多个页面使用,而不仅仅是一个页面。在这种情况下,使用Cookie虽然可以达成目的,但是Cookie有些缺陷,比如只能存储4K左右的数据,不能存储对象等等。于是,在HTML5中新增了Web Storage API,解决了上述问题,让我们可以方便地在浏览器本地进行数据存储。

Web Storage API有两种:localStorage和sessionStorage,两者的区别在于:

  • localStorage:在页面关闭后仍然可以存在。也就是说,在同一个浏览器中,即使关闭了标签页或者浏览器,数据仍然存在。而且,这些数据只有在用户手动清除浏览器缓存的情况下才会被删除。
  • sessionStorage:仅在当前会话(当前页面或选项卡)下有效。关闭标签页或浏览器后,这些数据会被删除。

jQuery如何实现本地存储?

为了方便使用Web Storage API,jQuery提供了localStorage()和sessionStorage()方法。这两个方法的用法基本相同,所以我们仅介绍localStorage的用法。

1. 存储数据

// 存储一个键值对
localStorage.setItem("key", "value");

// 存储一个对象
localStorage.setItem("user", JSON.stringify({name: "Alice", age: 18}));

以上代码使用setItem()方法存储了一个键值对,或者一个对象(需要使用JSON.stringify()将对象转换为JSON字符串),其中key是键,value是值。如果键已经存在,setItem()方法将覆盖原来的值。

2. 获取数据

// 获取一个键值对
let value = localStorage.getItem("key");

// 获取一个对象
let user = JSON.parse(localStorage.getItem("user"));

以上代码使用getItem()方法获取了localStorage中存储的值,如果键不存在,将返回null。

3. 删除数据

// 删除一个键值对
localStorage.removeItem("key");

// 清空localStorage
localStorage.clear();

以上代码使用removeItem()方法删除一个键值对,clear()方法清空localStorage中的所有数据。

示例1:记住用户名

下面就是一个实际应用场景,当用户在登录页面勾选“记住用户名”复选框时,将用户名保存在localStorage中。当用户再次打开登录页面时,如果localStorage中存在用户名,则自动填充用户名。

<form action="" method="post">
  <p><label>用户名:<input type="text" name="username" id="username"></label></p>
  <p><label>密码:<input type="password" name="password"></label></p>
  <p><label><input type="checkbox" id="remember-name">记住用户名</label></p>
  <p><button type="submit">登录</button></p>
</form>
$(function() {
  // 当页面加载时,从localStorage中获取用户名
  let username = localStorage.getItem("username");
  if(username) {
    $("#username").val(username);
    $("#remember-name").prop("checked", true);
  }

  // 当用户勾选/取消“记住用户名”时,将用户名保存在/从localStorage中
  $("#remember-name").change(function() {
    if(this.checked) {
      localStorage.setItem("username", $("#username").val());
    }
    else {
      localStorage.removeItem("username");
    }
  });
});

以上代码使用jQuery中的.val()方法获取username输入框中的值,并使用.prop()方法来设置/获取复选框的状态(默认为未勾选)。当用户勾选/取消“记住用户名”时,通过change事件来处理,使用localStorage.setItem()或localStorage.removeItem()来保存/删除键值对。

示例2:本地搜索历史记录

下面是一个实际应用场景,实现搜索历史记录的本地存储。当用户在搜索框中输入关键字时,将关键字保存在localStorage中。当用户再次进入搜索页面时,自动显示历史搜索记录。

<input type="text" id="search">
<button id="btn-search">搜索</button>
<ul id="search-history"></ul>
$(function() {
  // 每次进入搜索页面时,显示历史搜索记录
  let searchHistory = JSON.parse(localStorage.getItem("searchHistory")) || [];
  for(let i = 0; i < searchHistory.length; i++) {
    $("<li>").text(searchHistory[i]).prependTo("#search-history");
  }

  // 当用户搜索时,将关键字保存在localStorage中,并显示在历史搜索记录中
  $("#btn-search").click(function() {
    let keyword = $("#search").val().trim();
    if(keyword) {
      if(searchHistory.indexOf(keyword) == -1) {
        searchHistory.push(keyword);
        localStorage.setItem("searchHistory", JSON.stringify(searchHistory));
        $("<li>").text(keyword).prependTo("#search-history");
      }
      // 进行搜索操作
      console.log("搜索:" + keyword);
    }
  });

  // 清除历史搜索记录
  $("#btn-clear").click(function() {
    localStorage.removeItem("searchHistory");
    $("#search-history").empty();
  });
});

以上代码使用JSON.parse()和JSON.stringify()来将对象和字符串互相转换,使用indexOf()来检查数组中是否存在某个元素,使用.prependTo()和.empty()来操作DOM并清空历史记录。注意,以上示例没有实现对 localStorage 的容量以及条目数的限制,实际应用时需要根据需求进行限制。

总之,jQuery使得使用 localStorage 变得异常简单,相比纯JavaScript来讲,API的使用更加的简洁。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery实现本地存储 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 基于jQuery实现的向下滑动二级菜单效果代码

    当我们需要在网站中添加菜单栏时,常见的需求是希望菜单栏可以支持多级菜单,而二级菜单通常以向下滑动的方式展示。下面是一个基于jQuery实现的向下滑动二级菜单效果代码的完整攻略。 步骤一:HTML结构 首先,我们需要创建一个包含多级菜单的HTML结构。一般来说,我们使用无序列表标签<ul>和每个菜单项的列表项标签<li>来实现菜单栏,同…

    jquery 2023年5月28日
    00
  • jQuery UI进度条值选项

    jQuery UI进度条值选项攻略 jQuery UI进度条是一个强大的JavaScript库,它提供了许多选项和功能,以便自定义的进度条。其中,值选项用于设置进度条的当前值。以下是详细攻略,含两个示例,演示如何使用值选项: 步骤1:引入库 在使用之前,需要先在HTML中引入jQuery库和 UI。可以通过以下方式引入: <link rel=&quot…

    jquery 2023年5月9日
    00
  • jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理

    首先,本文将深入讲解jQuery 1.9.1源码中事件系统的主动触发事件和模拟冒泡处理的实现原理。在介绍过程中,将会涉及到代码实现以及示例说明。 事件系统之主动触发事件 jQuery中的事件处理机制是基于DOM Level 2的,而DOM Level 2规范中明确规定“任何事件都可以通过调用dispatchEvent()方法手动触发”。基于这个规范,jQue…

    jquery 2023年5月18日
    00
  • 如何使用jQuery Mobile创建一个日期时间输入

    下面是使用jQuery Mobile创建日期时间输入的完整攻略,步骤如下: 1. 引入jQuery和jQuery Mobile库 首先需要在项目中引入jQuery和jQuery Mobile库。 <head> <meta charset="UTF-8"> <meta name="viewport&q…

    jquery 2023年5月12日
    00
  • jQuery实现文件编码成base64并通过AJAX上传的方法

    以下是“jQuery实现文件编码成base64并通过AJAX上传的方法”的完整攻略: 1.前置知识 在阅读下文之前,需要了解以下知识: HTML5中的File API 获取文件内容 Base64编码方式 jQuery AJAX 上传文件的方法 2.实现步骤 2.1 通过HTML5中的File API获取文件内容 在HTML页面中,我们可以通过<inpu…

    jquery 2023年5月27日
    00
  • 如何使用jQuery来突出显示备用的表格行

    要使用jQuery来突出显示备用的表格行,我们可以使用以下步骤: 使用$()函数选择需要突出显示的表格行。 使用.filter()函数选择备用的表格行。 使用.addClass()函数添加CSS类以突出显示备用的表格行。 以下是两个示例,演示如何使用jQuery来突出显示备用的表格行: 示例1:突出显示单个表格 以下是一个示例,演示如何使用jQuery来突出…

    jquery 2023年5月9日
    00
  • 如何使用jQuery Mobile创建隐藏在输入区的标签

    当我们想为我们的网页增加新的元素时,我们可以选择隐藏它们,直到用户使用特定的交互元素时才显示。在这种情况下,jQuery Mobile提供了一个方便的方式来为我们的交互元素添加隐藏标签。下面是如何使用jQuery Mobile创建隐藏在输入区的标签的步骤和示例说明: 1. 添加jQuery Mobile的链接和导航菜单 首先,我们需要在HTML文件的head…

    jquery 2023年5月12日
    00
  • jQuery on方法传递参数示例

    “jQuery on方法传递参数示例”可以通过以下步骤进行实现: 理解jQuery on方法的基本用法 在使用jQuery on方法传递参数之前,我们需要先了解jQuery on方法的基本用法。 jQuery on方法主要用于在一个或多个元素上绑定事件处理程序,它需要两个参数:事件类型和事件处理函数。例如,我们可以在一个按钮上绑定一个点击事件处理函数,当用户…

    jquery 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部