jQuery网页开发案例:jQuery 其他方法--jQuery 拷贝对象,多库共存,jQuery 插件

news2024/9/20 22:28:24

jQuery 对象拷贝

 

如果想要把某个对象拷贝(合并) 给另外一个对象使用,此时可以使用 $.extend() 方法

语法:

$.extend([deep], target, object1, [objectN])    

1. deep: 如果设为true 为深拷贝, 默认为false  浅拷贝

2. target: 要拷贝的目标对象

3. object1:待拷贝到第一个对象的对象

4. objectN:待拷贝到第N个对象的对象

5. 浅拷贝是把被拷贝的对象复杂数据类型中的地址拷贝给目标对象,修改目标对象会影响被拷贝对象。

就是把地址拷贝,当其中一个值发生改变,另一个指向这个地址的对象的值也会发生改变

6. 深拷贝,前面加true, 完全克隆(拷贝的对象,而不是地址),修改目标对象不会影响被拷贝对象。

深拷贝 完全复制对象,然后自己开辟一个属于自己的空间 

多库共存

问题概述:

jQuery使用$作为标示符随着jQuery的流行,其他 js 也会用这$作为标识符, 这样一起使用会引起冲突

客观需求:

需要一个解决方案,让jQuery 和其他的js库不存在冲突,可以同时存在,这就叫做多库共存。

jQuery 解决方案:

1. 把里面的 $ 符号 统一改为 jQuery。 比如 jQuery(''div'')

2.  jQuery 变量规定新的名称:$.noConflict()        var xx = $.noConflict();

报错,我们封装了一个名字为$的函数,但是在这个函数里面没有each方法因此会报错 

 jQuery 插件

jQuery 功能比较有限,想要更复杂的特效效果,可以借助于 jQuery 插件完成。

注意: 这些插件也是依赖于jQuery来完成的,所以必须要先引入jQuery文件,因此也称为 jQuery 插件。

jQuery 插件常用的网站:

1.  jQuery 插件库  jQuery插件库-收集最全最新最好的jQuery插件 (jq22.com) 

2.  jQuery 之家   jQuery之家-自由分享jQuery、html5、css3的插件库 (htmleaf.com)

jQuery 插件使用步骤:

1.  引入相关文件。(jQuery 文件 和 插件文件)   

2.  复制相关htmlcssjs (调用插件)

 jQuery 插件演示:

1. 瀑布流

2. 图片懒加载(图片使用延迟加载在可提高网页下载速度。它也能帮助减轻服务器负载

  当我们页面滑动到可视区域,再显示图片。

  我们使用jquery 插件库  EasyLazyload。 注意,此时的js引入文件和js调用必须写到 DOM元素(图片)最后面

 

在VScode中ctrl+h键可以实现查找替换 

复制js和css到自己的文件夹中

 3. 全屏滚动(fullpage.js

      gitHubGitHub - alvarotrigo/fullPage.js: fullPage plugin by Alvaro Trigo. Create full screen pages fast and simple

      中文翻译网站: jQuery全屏滚动插件fullPage.js演示_dowebok

 bootstrap JS 插件:

bootstrap 框架也是依赖于 jQuery 开发的,因此里面的 js插件使用 ,也必须引入jQuery 文件。

注意要写在<div class="container"></div>里面

就是把需要的组件写道需要位置

 案例:toDoList

文本框里面输入内容,按下回车,就可以生成待办事项。

点击待办事项复选框,就可以把当前数据添加到已完成事项里面。

点击已完成事项复选框,就可以把当前数据添加到待办事项里面。

但是本页面内容刷新页面不会丢失。

toDoList 分析

刷新页面不会丢失数据,因此需要用到本地存储 localStorage

核心思路: 不管按下回车,还是点击复选框,都是把本地存储的数据加载到页面中,这样保证刷新关闭页面不会丢失数据

存储的数据格式:var todolist =  [{ title : xxx, done: false}]

title是文本框里面的内容 done是判断是否完成

注意点1: 本地存储 localStorage 里面只能存储字符串格式 ,因此需要把对象转换为字符串 JSON.stringify(data)

注意点2: 获取本地存储数据,需要把里面的字符串转换为对象格式JSON.parse() 我们才能使用里面的数据。

 toDoList 按下回车把新数据添加到本地存储里面

切记: 页面中的数据,都要从本地存储里面获取,这样刷新页面不会丢失数据,所以先要把数据保存到本地存储里面。

利用事件对象.keyCode判断用户按下回车键(13)。

声明一个数组,保存数据。

要读取本地存储原来的数据(声明函数 getData()),放到这个数组里面。

之后把最新从表单获取过来的数据,追加到数组里面。

最后把数组存储给本地存储 (声明函数 savaDate())

$(function(){
	// 1. toDoList 按下回车把新数据添加到本地存储里面
	$("#title").on("keydown",function(e){
		if(e.keyCode===13){
			// 先读取本地存储原来的数据
			var local=getDate()
			// console.log(local);
			// 把local数组进行更新数据 把最新的数据追加给local数组
			local.push({title:$("#title").val(),done:false,});
			// 把这个数组local存储到本地存储
			saveDate(local);//local是局部变量,传递给saveData()并且保存数据
		}
	})
	// 读取本地存储的数据
	function getDate(){
		var data=localStorage.getItem("todolist");
		if(data!==null){
			// 本地存储里面的数据是字符串格式的 但是我们需要的是对象格式的
			return JSON.parse(data)
		}else{
			return [];
		}
	}
	// 保存本地存储数据
	function saveDate(data){
		localStorage.setItem("todolist",JSON.stringify(data));
	}
})

 toDoList 本地存储数据渲染加载到页面

因为后面也会经常渲染加载操作,所以声明一个函数 load,方便后面调用

先要读取本地存储数据。(数据不要忘记转换为对象格式)

之后遍历这个数据($.each()),有几条数据,就生成几个小li 添加到 ol 里面。

每次渲染之前,先把原先里面 ol 内容清空,然后渲染加载最新的数据。

toDoList 删除操作

点击里面的a链接,不是删除的li,而是删除本地存储对应的数据。

核心原理:先获取本地存储数据,删除对应的数据,保存给本地存储,重新渲染列表li

我们可以给链接自定义属性记录当前的索引号

根据这个索引号删除相关的数据----数组的splice(i, 1)方法

存储修改后的数据,然后存储给本地存储

重新渲染加载数据列表

因为a是动态创建的,我们使用on方法绑定事件

	// 3.toDolist删除操作
	$("ol").on("click","a",function(){
		// 先获取本地元素
		var data = getDate();
		console.log(data);
		// 修改数据
		var index = $(this).attr("id");
		console.log(index);
		data.splice(index, 1);
		// 存储数据
		saveDate(data)
		// 重新渲染
		load()
	})

toDoList  正在进行和已完成选项操作

当我们点击了小的复选框,修改本地存储数据,再重新渲染数据列表。

点击之后,获取本地存储数据。

修改对应数据属性 done 为当前复选框的checked状态。

之后保存数据到本地存储

重新渲染加载数据列表

load 加载函数里面,新增一个条件,如果当前数据的donetrue 就是已经完成的,就把列表渲染加载到 ul 里面

如果当前数据的done false, 则是待办事项,就把列表渲染加载到 ol 里面

toDoList 统计正在进行个数和已经完成个数

在我们load 函数里面操作

声明2个变量 :todoCount 待办个数  doneCount 已完成个数  

进行遍历本地存储数据的时候, 如果 数据donefalse, 则 todoCount++, 否则 doneCount++

最后修改相应的元素 text()

$(function() {
	load();
	// 1. toDoList 按下回车把新数据添加到本地存储里面
	// load()//开始前调用,是把数据显示在页面上
	$("#title").on("keydown",function(e){
		
		if(e.keyCode===13){
			if($(this).val()===""){
				alert("内容为空")
			}else{
				// 先读取本地存储原来的数据
					var local=getDate();
					console.log(local);
					// 把local数组进行更新数据 把最新的数据追加给local数组
					local.push({title:$(this).val(),done:false});
					// 把这个数组local存储到本地存储
					saveDate(local);//local是局部变量,传递给saveData()并且保存数据
					//  2.toDoList 本地存储数据渲染加载到页面
					load();
				}
				$(this).val("");
			}
		
	})
	// 3.toDolist删除操作
	$("ol,ul").on("click","a",function(){
		// 先获取本地元素
		var data = getDate();
		console.log(data);
		// 修改数据
		var index = $(this).attr("id");
		console.log(index);
		data.splice(index, 1);
		// 存储数据
		saveDate(data)
		// 重新渲染
		load()
	})
	// 4.toDoList  正在进行和已完成选项操作
	$("ol,ul").on("click","input",function(){
		// alert(1)
		// 先获取本地元素
		var data=getDate();
		// 修改数据
		var index = $(this).siblings("a").attr("id");
		data[index].done=$(this).prop("checked")
		console.log(data);
		// 存储数据
		saveDate(data)
		// 重新渲染
		load()
	})
	// 读取本地存储的数据
	function getDate(){
		var data = localStorage.getItem("todolist");
		    if (data !== null) {
		        // 本地存储里面的数据是字符串格式的 但是我们需要的是对象格式的
		        return JSON.parse(data);
		    } else {
		        return [];
		    }
		}
	// 保存本地存储数据
	function saveDate(data){
		localStorage.setItem("todolist",JSON.stringify(data))
	}
	
	// 渲染加载数据
	function load(){
		var data=getDate();
		console.log(data);
		// 遍历之前要清空ol里面的元素内容,不然会打印俩次
		$("ol,ul").empty();
		var todoCount=0;//正在进行的个数
		var doneCount=0;//已经完成的个数
		// 遍历数据
		$.each(data,function(i,n){
			if(n.done){
				$("ul").prepend("<li><input type='checkbox' checked='checked'> <p>" + n.title + "</p> <a href='javascript:;' id=" + i + " ></a></li>");
				doneCount++;
			}else{
				$("ol").prepend("<li><input type='checkbox' > <p>" + n.title + "</p> <a href='javascript:;' id=" + i + " ></a></li>");
				todoCount++;
			}
			// console.log(n);
			// $("ol").prepend("<li><input type='checkbox'>"+n.title+"<p></p><a href='javascript:;' id="+i+"></a></li>")
			// $("ol").prepend("<li><input type='checkbox' > <p>" + n.title + "</p> <a href='javascript:;' id=" + i + " ></a></li>");
		})
		$("#todocount").text(todoCount);
		$("#donecount").text(doneCount);
	}
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做减法才是真本事,别以为你很能学,做加法一点都不难

文章目录 顶级的高手才敢做减法 前言 一、做减法才是真本事 二、大数据梦想联盟活动开启 顶级的高手才敢做减法 前言 大多数人不懂&#xff0c;不会&#xff0c;不做&#xff0c;才是你的机会&#xff0c;你得行动&#xff0c;不能畏首畏尾 大数据等于趋势&#xff0c;一…

Vue中computed和watch区别

前言 vue中的computed和watch我们经常会用到&#xff0c;那么在什么场景下使用computed和watch&#xff0c;两者又有什么区别呢&#xff0c;傻傻分不清楚。记录一下&#xff0c;温故而知新&#xff01; computed computed是计算属性&#xff0c;基于data中声明过或者父组件传递…

makkefile文件自动化编译以及基础文件命令(补)

目录makefile文件&#xff1a;实现自动化编译基础文件命令find&#xff08;查找&#xff09;grep&#xff08;过滤&#xff09;| &#xff08;管道&#xff09;关机重启文件压缩解压分步压缩解压一步压缩解压makefile文件&#xff1a;实现自动化编译 文件名称必须是:makefile …

【day15】每日强训编程题——查找输入整数二进制中1的个数手套

查找输入整数二进制中1的个数_牛客题霸_牛客网 这道题非常简单&#xff0c;就一个思路&#xff1a; 按位与& 任何一个数按位与上1&#xff0c;如果这个数二进制的最后一位是1&#xff0c;那么按位与的结果就是1&#xff0c;否则就是0 代码思路&#xff1a;n按位与1后往右…

【splishsplash】PBD探究

上次我们探究了PBD是如何引入plishsplash的&#xff0c;以及其控制流。 https://blog.csdn.net/weixin_43940314/article/details/127569870 这次我们来讲如何在自己新建的类中控制PBD刚体。 上回说到 Simulator\PositionBasedDynamicsWrapper\PBDWrapper.cpp 中的 void PBD…

AXI协议详解(6)-原子访问

原子访问 本章介绍了 AXI 协议如何实现排他访问和锁定访问机制。 它包含以下部分&#xff1a; 原子访问排他访问锁定访问 6.1 原子访问 为了实现原子访问权限&#xff0c;ARLOCK[1:0] 或 AWLOCK[1:0] 信号提供排他访问和锁定访问。 表 6-1 显示了 ARLOCK[1:0] 和 AWLOCK[1:…

3.NLP基础:文本可视化简述

1.文本可视化的流程 文本可视化依赖于自然语言处理&#xff0c;因此词袋模型、命名实体识别、关键词抽取、主题分析、情感分析等是较常用的文本分析技术。文本分析的过程主要包括特征提取&#xff0c;通过分词、抽取、归一化等操作提取出文本词汇级的内容&#xff0c;利用特征…

Qt 集成 FFmpeg 实现颜色格式转换

目录 1. Qt 集成 FFmpeg 1.1 下载 FFmpeg 1.2 Qt 集成 FFmpeg 1.2.1 修改 .pro 文件 1.2.2 放入 dll 文件 1.2.3 代码中使用 FFmpeg 2. 图像格式转换 3. 预览 4. 项目地址 项目需要&#xff0c;写个小工具来实现图像颜色格式的转换&#xff0c;主要的 Feature 如下&am…

百度最强中文AI作画大模型

前言 最近文生图领域的发展可谓是分生水起&#xff0c;这主要是得益于最近大火的扩散模型&#xff0c;之前笔者也写过一篇关于文本生产3D模型的文章&#xff0c;大家感兴趣的可以穿梭&#xff1a; https://zhuanlan.zhihu.com/p/570332906 今天要给大家介绍的这一篇paper是百度…

AXI协议详解(10)-非对齐传输

非对齐传输 本章介绍 AXI 协议如何处理未对齐的传输。 它包含以下部分&#xff1a; • 未对齐的传输 • 示例 10.1 关于未对齐传输 AXI 协议使用基于突发的寻址&#xff0c;这意味着每个事务由多个数据传输组成。 通常&#xff0c;每个数据传输都与传输大小对齐。 例如&…

Linux入门

Liunx 一计算机发展历史第一台计算机的诞生时代背景线计算机的发展线国家线时间线收束Liunx诞生操作系统简述购买云服务器以及登录增加用户总结学习的同时别忘了每天运动&#xff01; 身体才是革命的本钱 计算机发展历史 第一台计算机的诞生 第一台计算机在1946年2月14日在美国…

webpack学习踩坑笔记(持续更新中...)

目录 学习内容&#xff1a; 1.5使用plugin 1.6 使用DevServer 学习内容&#xff1a; 《深入浅出webpack》 深入浅出Webpack Dive Into GitBook 因为很多内容书上已经写了&#xff0c;这里主要是记录一下个人看书过程中遇到的坑 1.5使用plugin 这一部分介绍了一个可以把…

vue3事件处理

获取到用户点击或者勾选的值 <li click“clici(item)” v-for"item in data" :key"id"> {{item}}</li> <script> clici(item){ } </script> v-model 实现数据的双向绑定 v-model.lazy 只有当用户提交或enter键后才触…

【数据结构】动态顺序表(C语言实现)

文章目录0. 前言1. 线性表2. 顺序表2.1 概念及结构3. 动态顺序表的实现3.1 定义结构3.2 接口函数总览3.3 初始化3.4 检查增容3.5 尾插3.6 尾删3.7 头插3.8 头删3.9 查找3.10 指定下标位置插入3.11 指定下标位置删除3.12 修改3.13 打印3.14 销毁4. 完整代码SeqList.hSeqList.cte…

HTML常见标签总结

目录 1.标题标签 2.段落标签 3.字体修饰标签 4.图片标签 5.超链接标签 6.表格标签 7.列表标签 8.表单标签 9.下拉菜单 10 多行文本框 1.标题标签 一级标题是<h1></h1>中间填上标题的内容,一共可以设置六级标题,数字越小,标题就越大越粗 我们测试一段代码 …

深度残差收缩网络(Deep Residual Shrinkage Networks for Fault Diagnosis )

摘要-本文开发了新的深度学习方法&#xff0c;即深度残余收缩网络&#xff0c;提高来自高噪声振动信号的特征学习能力&#xff0c;并实现较高的故障诊断准确性。软阈值作为非线性转换层插入到深层体系结构中&#xff0c;以消除不重要的特征。此外&#xff0c;考虑到通常为阈值设…

大数据编程实验一:HDFS常用操作和Spark读取文件系统数据

大数据编程实验一&#xff1a;HDFS常用操作和Spark读取文件系统数据 文章目录大数据编程实验一&#xff1a;HDFS常用操作和Spark读取文件系统数据一、前言二、实验目的与要求三、实验内容四、实验步骤1、HDFS常用操作2、Spark读取文件系统的数据五、最后我想说一、前言 这是我…

Swift基础——字典

Swift基础——字典 嗯。。。前面我们已经学习了数组&#xff08;相关文章地址&#xff09;&#xff0c;我们知道了在Swift中&#xff0c;苹果提供了两种集合类型来存储集合的值即Array和Dictionary。 Dictionary字典 字典&#xff1a;一种存储多个相同类型值的容器&#xff…

谈谈Java对象的生命周期

经过前面的分析 &#xff0c;我们现在来看一下创建的对象到底是什么东西&#xff0c;并且完整的总结一下一个对象从创建到回收到底经过了哪些阶段。 1 对象的创建 对象创建的主要流程: 1.类加载检查 虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的参数是否能在常…

【趣学算法】贪心算法、海盗古董装船问题

14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的&#xff0c;这一次&#xff0c;让我们先人一步&#xff0c;趣学算法&#xff01; 文章目录贪心本质贪心选择最优子结构最优装载问题sort函数总结贪心本质 一个贪心算法总是做出当前最好的选择&#xff0c;也就是说…