diff --git "a/49 \346\235\216\350\210\222\346\261\266/12.12jquery\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" "b/49 \346\235\216\350\210\222\346\261\266/12.12jquery\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md"
new file mode 100644
index 0000000000000000000000000000000000000000..d79e8347ac27f1d67c5848cff283b4584040d480
--- /dev/null
+++ "b/49 \346\235\216\350\210\222\346\261\266/12.12jquery\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md"
@@ -0,0 +1,348 @@
+### 笔记
+
+**jQuery 库可以通过一行简单的标记被添加到网页中。**
+
+## jQuery 库 - 特性
+
+jQuery 是一个 JavaScript 函数库。
+
+jQuery 库包含以下特性:
+
+- HTML 元素选取
+- HTML 元素操作
+- CSS 操作
+- HTML 事件函数
+- JavaScript 特效和动画
+- HTML DOM 遍历和修改
+- AJAX
+- Utilities
+
+## 向您的页面添加 jQuery 库
+
+jQuery 库位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数。
+
+可以通过下面的标记把 jQuery 添加到网页中:
+
+```
+
+
+
+```
+
+请注意,
+```
+
+
+
+```js
+/**
+ * 目标1:图书列表
+ * 1.获取数据
+ * 2.渲染表格**/
+
+//获取公用对象
+// const tbody = document.querySelector('.list');
+
+//设置一个名字来接受数据,当你再次使用,记得改变名字,因为接口会记录名字
+const creator = '泰格瑞瑞123456';
+
+//创建一个渲染函数
+function getBook(){
+ //1.获取数据
+ axios({
+ url:'https://hmajax.itheima.net/api/books',
+ params:{
+ creator
+ }
+ }).then(result => {
+ // console.log(result);//打印result
+ //找到这个接口的数据
+ const bookList = result.data.data;
+ //将数据以接口里的数据以什么样的方式渲染出来
+ const listStr = bookList.map((item,i) => {
+ //查看是否获得数据,并查看数据是否正确
+ //console.log(item);
+ //拆解数据,方便书写
+ const {id,author,bookname,publisher} = item ;
+ return `
+
+ ${i + 1} |
+ ${author} |
+ ${bookname} |
+ ${publisher} |
+
+ 删除
+ 编辑
+ |
+
+ `;
+ }).join('')
+
+ //将数据显示到tbody(网页)中
+ //当你要用的时候记得想一下,你要得是什么格式
+ $('.list')[0].innerHTML = listStr
+ }).catch(error => {
+ //浅浅打印一下
+ // console.log(error);
+ })
+
+
+
+}
+
+//先调用函数,使得展示什么样的效果
+//第一次打开网页就要加载一次
+getBook();
+
+// 二、添加功能
+// 1.显示或隐藏弹窗
+// 2.保存按钮点击事件
+// 3.手机表单数据
+// 4.调用接口接收数据
+// 5.提交数据,并隐藏数据
+// 6.清空表单之前写的数据,(为了安全)
+// 7.获取新数据并渲染在网页中
+
+//创建弹窗对象
+//当class中的字段太多时,可以选择其中一个写,只要不与其他名字重合就行
+const addBox = document.querySelector('.add-modal');
+
+//增加图书的弹窗对象
+//modal对象,可以控制addBox显示或隐藏
+//bootstrap 可以下来学习一下
+const modal = new bootstrap.Modal(addBox);
+
+//获取要收集的表单对象
+// const addForm = document.querySelector('.add-form');
+
+//获取保存按钮
+// const addBtn = document.querySelector('.add-btn');
+
+//保存按钮点击事件
+$('.add-btn').click(() => {
+
+
+ //添加是否要新增的提示
+ if (!confirm('确定要新增吗?')) {
+ return //阻止往后运行
+}
+//查看上面的if是否能使用
+// console.log('你确定要新增吗');
+ //收集表单数据
+ const book = serialize($('.add-form')[0],{ hash : true , empty : true });
+ // console.log(book);
+
+ //调用接口提交数据
+ axios({
+ url:'https://hmajax.itheima.net/api/books',
+ method:'post',
+ data:{
+ ...book,
+ creator
+ }
+ }).then(result => {
+
+ // console.log(result);
+
+ //隐藏弹窗
+ modal.hide()
+
+ //清空表单里刚才填写的数据
+ $('.add-form')[0].reset()
+
+ //渲染新的数据,显示在网页中
+ getBook()
+
+ })
+})
+
+
+// 三、删除图书
+// 1.给删除点击事件
+// 2.获取图书的id(在渲染时添加的自定义属性)
+// 3.通过id调用接口,删除对应的图书
+// 4.删除后再次渲染
+
+
+//将点击委托给tbody
+$('.list').click((e) => {
+ //删除对象的两种方案
+ //className === 'del'
+ //calssList.contains('del')
+
+ if (e.target.classList.contains('del')) {
+ //删除前要确认一下是否真的要删除
+ //返回布尔值
+ if (!confirm('确定要删除吗?')) {
+ return //阻止往后运行
+ }
+ //查看上面的if是否能使用
+ console.log('你确定要删除吗');
+
+ // 获取图书的id
+ const id = e.target.parentNode.dataset.id;
+
+ //调用接口
+ axios({
+ url: `https://hmajax.itheima.net/api/books/${id}`,
+ method:'delete'
+ }).then(result => {
+
+ //删除后再次渲染
+ getBook()
+ })
+ }
+
+})
+
+
+//四、编辑图书
+// 1.显示编辑弹窗
+// 2.获取图书的id
+// 3.通过id调用接口,获取对应的图书数据,回显到表单
+// 4.修改按钮点击事件
+// 5.收集表单数据
+// 6.调用接口提交数据
+// 7.提交数据,隐藏弹窗
+// 8.编辑后再次渲染
+
+//创建弹窗当初
+const editBox = document.querySelector('.edit-modal');
+
+//添加图书的弹窗对象
+//Modal对象,可以控制editBox的显示和隐藏
+const editModal = new bootstrap.Modal(editBox);
+
+//获取要收集的表单对象
+const editForm = document.querySelector('.edit-form');
+// console.log(editForm);
+
+// 给tbody添加点击事件,点击触发编辑弹窗
+$('.list').click((e) => {
+ //判断是否按到编辑按钮
+ if (e.target.className === 'edit') {
+ //显示
+ editModal.show();
+
+ //获取图书的id
+ const id = e.target.parentNode.dataset.id;
+
+ //通过id调用接口,获取对应的图书数据,回显到表单
+ axios({
+ //拼接字符串的形式
+ url:'https://hmajax.itheima.net/api/books/'+id,
+
+ }).then(result => {
+ //打印,并查看数据
+ // console.log(result.data.data);
+
+ //获取数据(编辑的内容)
+ const book = result.data.data;
+
+ //拆解数据,便捷书写
+ const {id,author,bookname,publisher} = book
+
+ //获取编辑表单的数据,将旧的数据替换成新的数据
+ editForm.querySelector('.publisher').value = publisher;
+ editForm.querySelector('.bookname').value = bookname;
+ editForm.querySelector('.author').value = author;
+ editForm.querySelector('.id').value = id;
+ })
+ }
+ })
+
+//修改后,将数据发送到接口,并隐藏编辑弹窗
+//获取修改按钮
+ // const editBtn = document.querySelector('.edit-btn');
+ // editBtn.innerHTML = '保存'
+
+ $('.edit-btn')[0].click(() => {
+
+ //添加是否要修改的提示
+ if (!confirm('确定要修改吗?')) {
+ return //阻止往后运行
+ }
+ //查看上面的if是否能使用
+ // console.log('你确定要修改吗');
+ //收集表单数据
+ const book = serialize(editForm,{ hash : true , empty : true })
+
+ //拆解数据,便捷书写
+ const {id,author,bookname,publisher} = book ;
+ // console.log(book);
+
+ //调用接口提交数据
+ axios({
+ url:'https://hmajax.itheima.net/api/books/'+id,
+ method:'put',
+ data:{
+ ...book,
+ creator
+ }
+ }).then(result => {
+ // console.log(result);
+ //隐藏弹窗
+ editModal.hide();
+
+ //渲染
+ getBook();
+ })
+ })
+
+
+
+
+
+
+
+
+```