diff --git "a/\345\276\220\351\252\217\351\271\217/20211207-JQuery\346\223\215\344\275\234DOM/1.MD" "b/\345\276\220\351\252\217\351\271\217/20211207-JQuery\346\223\215\344\275\234DOM/1.MD"
new file mode 100644
index 0000000000000000000000000000000000000000..f64c51382a31be9eade566cc500d4df1a854b35f
--- /dev/null
+++ "b/\345\276\220\351\252\217\351\271\217/20211207-JQuery\346\223\215\344\275\234DOM/1.MD"
@@ -0,0 +1,211 @@
+## 操作DOM
+有了jQuery对象,不需要考虑浏览器差异了,全部统一操作
+
+### 修改Text和HTML
+jQuery对象的text()和html()方法分别获取节点的文本和原始HTML文本,例如,如下的HTML结构:
+```
+
+
+ - JavaScript
+ - Java & JavaScript
+
+```
+```
+//Jquery获取文本和HTML
+
+var j1 = $('[name="book"]').text(); //'Java & JavaScript' 获取节点文本
+var j2 = $('[name="book"]').html(); //'Java & JavaScript' 获取节点的原始HTML文本 连结构一起输出
+```
+```
+//无参数调用text()是获取文本,传入参数就变成设置文本,HTML也是类似操作
+
+var ref1 = $('#test-ul li.js')
+var ref2 = $('#test-ul li[name="book"]')
+
+ref1.text("我是帅哥") // 修改文本
+ref2.html('你不是') //设置HTMl
+
+console.log(ref1.text());
+console.log(ref2.html());
+```
+
+一个jQuery对象可以包含0个或任意个DOM对象,它的方法实际上会作用在对应的每个DOM节点上。在上面的例子中试试:
+```
+//一个jQuery对象可以包含0个或任意个DOM对象,它的方法实际上会作用在对应的每个DOM节点上。
+
+$('#test-ul li').text('我是大帅哥') //修改所有li节点的文本 因为未指定具体的某一个li节点 将默认修改所有的li节点
+
+```
+jQuery对象的另一个好处是我们可以执行一个操作,作用在对应的一组DOM节点上。即使选择器没有返回任何DOM节点,调用jQuery对象的方法仍然不会报错:
+```
+// 如果不存在id为not-exist的节点:
+$('#not-exist').text('Hello'); // 代码不报错,没有节点被设置为'Hello'
+```
+
+#### 修改css样式
+```
+var pw1 =$("p").css("background-color","red")
+//获取 所有p元素 修改css("属性名","属性值")
+
+用到的便是JQuery提供的css方法
+获取style中某个属性的结构为:$(obj).css("属性名");
+修改属性值的结构为:$(obj).css("属性名", "属性值");
+
+
+$('#test-css li.dy>span').css('background-color','green').css('color','red')
+//修改background背景颜色 修改字体颜色color
+```
+jQuery对象的css()方法可以这么用:
+```
+var div = $('#test-div');
+div.css('color'); // '#000033', 获取CSS属性
+div.css('color', '#336699'); // 设置CSS属性
+div.css('color', ''); // 清除CSS属性
+
+
+为了和JavaScript保持一致,CSS属性可以用'background-color'和'backgroundColor' 驼峰式两种格式。
+
+```
+
+
+css()方法将作用于DOM节点的style属性,具有最高优先级。如果要修改class属性,可以用jQuery提供的下列方法:
+```
+var div = $('#test-div');
+div.hasClass('highlight'); // false, class是否包含highlight
+div.addClass('highlight'); // 添加highlight这个class
+div.removeClass('highlight'); // 删除highlight这个class
+
+```
+
+#### 练习
+```
+
+
+
+
+
+ - Python
+ - JavaScript
+ - Swift
+ - Haskell
+
+
+'use strict';
+
+var div = $('#test-highlight-css');
+
+div.css('color','#dd1144').css('background-color','#ffd351')
+//css()方法高亮显示
+
+div.addClass('highlight')
+//addClass()方法高亮显示
+
+```
+
+
+#### 显示和隐藏DOM
+
+```
+jQuery提供show()和hide()方法
+var li= $('#test-highlight-css .py'); //获取节点 Python
+
+li.hide(); //隐藏
+li.show(); //显示
+
+隐藏DOM节点并未改变DOM树的结构,它只影响DOM节点的显示。这和删除DOM节点是不同的
+```
+
+#### 获取DOM信息
+```
+ 利用jQuery对象的若干方法,我们直接可以获取DOM的高宽等信息,而无需针对不同浏览器编写特定代码:
+
+// 浏览器可视窗口大小:
+$(window).width(); // 800
+$(window).height(); // 600
+
+// HTML文档大小:
+$(document).width(); // 800
+$(document).height(); // 3500
+
+// 某个div的大小:
+var div = $('#test-div');
+div.width(); // 600
+div.height(); // 300
+div.width(400); // 设置CSS属性 width: 400px,是否生效要看CSS是否有效
+div.height('200px'); // 设置CSS属性 height: 200px,是否生效要看CSS是否有效
+```
+
+```
+attr()和removeAttr()方法用于操作DOM节点的属性:
+
+// ...
+var div = $('#test-div');
+div.attr('data'); // undefined, 属性不存在
+div.attr('name'); // 'Test'
+div.attr('name', 'Hello'); // div的name属性变为'Hello'
+div.removeAttr('name'); // 删除name属性
+div.attr('name'); // undefined
+```
+```
+//attr('属性名','值')修改已存在的属性的值 removeAttr('属性名') 删除属性
+
+
+
+var text=$('.form input[type="text"]') //获取DOM节点
+text.attr('value','帅哥') // attr()修改text的value属性
+
+```
+
+
+prop()方法和attr()类似,但是HTML5规定有一种属性在DOM节点中可以没有值,只有出现与不出现两种,例如:
+```
+
+等价于:
+```
+```
+
+```
+attr()和prop()对于属性checked处理有所不同:
+```
+var radio = $('#test-radio');
+radio.attr('checked'); // 'checked'
+radio.prop('checked'); // true
+```
+prop()返回值更合理一些。不过,用is()方法判断更好:
+```
+var radio = $('#test-radio');
+radio.is(':checked'); // true
+类似的属性还有selected,处理时最好用is(':selected')。
+```
+#### 操作表单
+```
+对于表单元素,jQuery对象统一提供val()方法获取和设置对应的value属性:
+
+/*
+
+
+
+*/
+var
+ input = $('#test-input'),
+ select = $('#test-select'),
+ textarea = $('#test-textarea');
+
+input.val(); // 'test'
+input.val('abc@example.com'); // 文本框的内容已变为abc@example.com
+
+select.val(); // 'BJ'
+select.val('SH'); // 选择框已变为Shanghai
+
+textarea.val(); // 'Hello'
+textarea.val('Hi'); // 文本区域已更新为'Hi'
+```
diff --git "a/\345\276\220\351\252\217\351\271\217/20211208-jQuery\344\272\213\344\273\266/1.MD" "b/\345\276\220\351\252\217\351\271\217/20211208-jQuery\344\272\213\344\273\266/1.MD"
new file mode 100644
index 0000000000000000000000000000000000000000..67937bbcb1f00440829cef5a97a7bbeecacff003
--- /dev/null
+++ "b/\345\276\220\351\252\217\351\271\217/20211208-jQuery\344\272\213\344\273\266/1.MD"
@@ -0,0 +1,169 @@
+## 事件
+
+因为JavaScript在浏览器中以单线程模式运行,页面加载后,一旦页面上所有的JavaScript代码被执行完后,就只能依赖触发事件来执行JavaScript代码。
+
+浏览器在接收到用户的鼠标或键盘输入后,会自动在对应的DOM节点上触发相应的事件。如果该节点已经绑定了对应的JavaScript处理函数,该函数就会自动调用。
+
+由于不同的浏览器绑定事件的代码都不太一样,所以用jQuery来写代码,就屏蔽了不同浏览器的差异,我们总是编写相同的代码。
+
+```
+/*
+点我试试
+*/
+```
+```
+on方法用来绑定一个事件,我们需要传入事件名称和对应的处理函数。
+
+var a = $('#test-link'); //查找到节点
+a.on('click', function () { //用on绑定事件 on('事件名称','对应函数')
+ alert('Hello!');
+});
+
+```
+更简化的写法是直接调用click()方法:
+```
+a.click(function () {
+ alert('Hello!');
+});
+```
+
+jQuery能够绑定的事件主要包括:
+
+### 鼠标事件
++ click: 鼠标单击时触发;
++ dblclick:鼠标双击时触发;
++ mouseenter:鼠标进入时触发;
++ mouseleave:鼠标移出时触发;
++ mousemove:鼠标在DOM内部移动时触发;
++ hover:鼠标进入和退出时触发两个函数,相当于mouseenter加上mouseleave。
+### 键盘事件
+键盘事件仅作用在当前焦点的DOM上,通常是``和`