jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)

下面是详细讲解“jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)”的完整攻略。

简介

本攻略主要讲解如何利用 jQuery 和 Cookie 实现一个本地收藏功能,在用户点击收藏按钮时,可以将当前页面地址存储在 Cookie 中,这样用户在下次打开网站时,还可以看到之前所收藏的内容。

步骤

步骤一:引入 jQuery 和 Cookie 库

在 head 中引用 jQuery 和 Cookie 库:

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

步骤二:添加收藏按钮

在需要添加收藏功能的页面中,添加一个收藏按钮,如下所示:

<button id="add-favorite-btn">添加收藏</button>

步骤三:绑定收藏事件

在 jQuery 中绑定按钮的 click 事件,获取当前页面的地址,并将其存储在 Cookie 中。为了防止用户多次点击收藏按钮造成重复的存储,我们需要先检查 Cookie 中是否已经存在当前页面的地址。

$(function() {
    $('#add-favorite-btn').click(function() {
        var url = window.location.href;
        var favoriteList = $.cookie('favoriteList');
        if (favoriteList) {
            // 如果 Cookie 中已经有收藏列表,判断当前页面是否已经收藏
            if (favoriteList.indexOf(url) !== -1) {
                alert('该页面已经收藏过了!');
                return;
            }
            favoriteList += '|' + url;
        } else {
            favoriteList = url;
        }
        // 将收藏列表保存到 Cookie 中
        $.cookie('favoriteList', favoriteList);
        alert('收藏成功!');
    });
});

上述代码首先获取当前页面的地址,然后从 Cookie 中获取收藏列表。如果收藏列表存在,就判断当前页面是否已经收藏过,如果收藏过就弹出提示信息并直接返回;否则将当前页面的地址添加到收藏列表的末尾,以 "|" 分隔。如果收藏列表不存在,就直接将当前页面的地址作为收藏列表保存到 Cookie 中,并弹出提示信息。

步骤四:获取已收藏列表

在需要展示收藏列表的页面中,通过 jQuery 和 Cookie 库获取已收藏的地址列表,并根据需要进行展示。

$(function() {
    var favoriteList = $.cookie('favoriteList');
    if (favoriteList) {
        // 如果 Cookie 中存在收藏列表,就展示收藏列表
        var urls = favoriteList.split('|');
        var listHtml = '';
        $.each(urls, function(index, url) {
            listHtml += '<li><a href="' + url + '">' + url + '</a></li>';
        });
        $('#favorite-list').html(listHtml);
    } else {
        $('#favorite-list').html('<li>暂无收藏</li>');
    }
});

上述代码首先从 Cookie 中获取收藏列表,如果收藏列表存在,就将列表中的地址分割成数组,并遍历每个地址,将其展示为一个链接。如果收藏列表不存在,就展示一条提示信息。展示收藏列表的代码可以自定义,上述代码只是为了演示添加的效果。

示例

下面是两个针对不同网页的示例,以演示如何添加和展示收藏列表。

示例一

网页链接:http://example.com/page1.html

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>示例一</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
    <script>
        $(function() {
            $('#add-favorite-btn').click(function() {
                var url = window.location.href;
                var favoriteList = $.cookie('favoriteList');
                if (favoriteList) {
                    // 如果 Cookie 中已经有收藏列表,判断当前页面是否已经收藏
                    if (favoriteList.indexOf(url) !== -1) {
                        alert('该页面已经收藏过了!');
                        return;
                    }
                    favoriteList += '|' + url;
                } else {
                    favoriteList = url;
                }
                // 将收藏列表保存到 Cookie 中
                $.cookie('favoriteList', favoriteList);
                alert('收藏成功!');
            });

            var favoriteList = $.cookie('favoriteList');
            if (favoriteList) {
                var urls = favoriteList.split('|');
                var listHtml = '';
                $.each(urls, function(index, url) {
                    listHtml += '<li><a href="' + url + '">' + url + '</a></li>';
                });
                $('#favorite-list').html(listHtml);
            } else {
                $('#favorite-list').html('<li>暂无收藏</li>');
            }
        });
    </script>
</head>

<body>
    <h1>示例一</h1>
    <p>这是示例一的内容。</p>
    <button id="add-favorite-btn">添加收藏</button>
    <ul id="favorite-list"></ul>
</body>

</html>

示例二

网页链接:http://example.com/page2.html

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>示例二</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
    <script>
        $(function() {
            $('#add-favorite-btn').click(function() {
                var url = window.location.href;
                var favoriteList = $.cookie('favoriteList');
                if (favoriteList) {
                    // 如果 Cookie 中已经有收藏列表,判断当前页面是否已经收藏
                    if (favoriteList.indexOf(url) !== -1) {
                        alert('该页面已经收藏过了!');
                        return;
                    }
                    favoriteList += '|' + url;
                } else {
                    favoriteList = url;
                }
                // 将收藏列表保存到 Cookie 中
                $.cookie('favoriteList', favoriteList);
                alert('收藏成功!');
            });

            var favoriteList = $.cookie('favoriteList');
            if (favoriteList) {
                var urls = favoriteList.split('|');
                var listHtml = '';
                $.each(urls, function(index, url) {
                    listHtml += '<li><a href="' + url + '">' + url + '</a></li>';
                });
                $('#favorite-list').html(listHtml);
            } else {
                $('#favorite-list').html('<li>暂无收藏</li>');
            }
        });
    </script>
</head>

<body>
    <h1>示例二</h1>
    <p>这是示例二的内容。</p>
    <button id="add-favorite-btn">添加收藏</button>
    <ul id="favorite-list"></ul>
</body>

</html>

总结

以上就是利用 jQuery 和 Cookie 实现本地收藏功能的攻略。需要注意的是,Cookie 中存储的内容大小是有限制的,如果收藏的页面过多或者页面地址过长,就可能会超过限制而导致无法正常的存储。因此,在实际应用中,还需要根据实际情况进行相关优化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery利用cookie 实现本地收藏功能(不重复无需多次命名) - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JavaScript Number 对象

    以下是关于JavaScript Number对象的完整攻略。 JavaScript Number对象 JavaScript Number对象是一种用于表示数字的数据类型。它可以表示整数、浮点数、负数等。 Number对象提了一些方法,用于对数字进行操作和转换。 创建Number对象 可以使用Number()构造函数来创建JavaScript Number对象…

    JavaScript 2023年5月11日
    00
  • 浅谈两种前端截图方式:Canvas截图 vs SVG截图

    背景 如今很多网站都引入截图功能,可用于问题反馈、内容分享等实用需求,而前端截图也不知不觉成为了首选。今天为大家推荐两种前端截图方式,虽然有些局限,但是也能应付大部分项目需求。 Canvas截图:html2canvas SVG截图:rasterizehtml 原理 首先来谈下两种前端截图方式的原理,虽然实现方式不太一致,但是核心思想是相同的。 以html2c…

    JavaScript 2023年4月18日
    00
  • JS实现给对象动态添加属性的方法

    给对象动态添加属性的方法在JS中有多种实现方式,下面详细讲解其中较为常见的两种。 使用点操作符或方括号操作符 我们可以使用点操作符或方括号操作符在运行时动态地为对象添加属性。使用点操作符时,可以像如下代码一样,将属性名称作为对象的属性名: const obj = {}; obj.name = ‘张三’; console.log(obj.name); // 输…

    JavaScript 2023年5月27日
    00
  • js脚本学习 比较实用的基础

    JS脚本学习 比较实用的基础攻略 前言 JavaScript是一种常用的编程语言,广泛用于Web前端和服务器后端开发,现如今几乎所有的网站都离不开JavaScript的支持。本文将介绍JS的一些脚本基础知识,以及一些实用的基础操作方法,旨在帮助初学者快速入门JS。 一、学习资源 MDN Web 文档是JS官方文档,包含了JS的语法、API、示例等详细资料。 …

    JavaScript 2023年6月11日
    00
  • javascript 注释代码的几种方法总结

    JavaScript 注释代码是为了在代码中加入一些标注或解释,方便程序员或其他人员阅读代码。注释代码在开发过程中起到了非常重要的作用。本文将详细讲解 JavaScript 注释代码的几种方法总结。 单行注释 使用单行注释的方法在注释行前加上双斜杠 “//”。单行注释只会注释单独一行代码。例如: var name = "张三"; // 定…

    JavaScript 2023年5月27日
    00
  • js实现数组的扁平化

    实现数组扁平化的方法有多种,以下介绍两种比较实用的方式。 方法一:使用递归实现数组扁平化 递归算法是一种自我调用的方法,即函数内部调用自身。使用递归实现数组扁平化的方式较为简单。 function flatten(arr) { var result = []; for (var i = 0, len = arr.length; i < len; i++…

    JavaScript 2023年5月27日
    00
  • 新手入门带你学习JavaScript引擎运行原理

    新手入门带你学习JavaScript引擎运行原理 1. 前言 JavaScript语言已经成为web前端技术的必备语言之一,对于想进一步掌握JavaScript运行原理的同学,了解JavaScript引擎的运行机制是非常重要的。 本文将从以下几个方面进行介绍: JavaScript引擎的功能和作用 JavaScript引擎的基本原理 实战案例学习 2. Ja…

    JavaScript 2023年5月27日
    00
  • JavaScript中定时控制Throttle、Debounce和Immediate详解

    JavaScript中定时控制Throttle、Debounce和Immediate详解 在JavaScript中,定时控制常常用于优化性能或者流程控制。本文将介绍三种常用的定时控制技术:Throttle、Debounce和Immediate,并提供相应的示例说明。 什么是Throttle? Throttle是一种在高频率触发事件时控制函数调用频率的技术。例…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部