diff --git "a/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1128jQuery\346\223\215\344\275\234\345\261\236\346\200\247\344\275\234\344\270\232.html" "b/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1128jQuery\346\223\215\344\275\234\345\261\236\346\200\247\344\275\234\344\270\232.html" new file mode 100644 index 0000000000000000000000000000000000000000..8acac1afdf0e77cebd61f6c6d9887817e3b87c86 --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1128jQuery\346\223\215\344\275\234\345\261\236\346\200\247\344\275\234\344\270\232.html" @@ -0,0 +1,293 @@ + + + + + + + Document + + + + + + + +
+ 0 + 1 + 2 + 3 + +
+
+ + + + +
+
+ +
+
+ + + + +
+ 用户名:
+ 密 码:
+ 确认密码:
+
+
+ + + + + + + + + + + +
留言 0
+ +
+ + + + + + \ No newline at end of file diff --git "a/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1130jQuery\344\272\213\344\273\266\345\257\271\350\261\241\344\275\234\344\270\232.html" "b/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1130jQuery\344\272\213\344\273\266\345\257\271\350\261\241\344\275\234\344\270\232.html" new file mode 100644 index 0000000000000000000000000000000000000000..2f6952021cbc587b2fbc7f63f641712369a93a60 --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1130jQuery\344\272\213\344\273\266\345\257\271\350\261\241\344\275\234\344\270\232.html" @@ -0,0 +1,109 @@ + + + + + 注册表单验证 + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
用户注册
用户名: + +
密码: + +
密码确认: + +
性别: + 男 + 女 + +
专业: + + +
爱好: + 抽烟 + 喝酒 + 打游戏 + 烫头发 + 足球 + 篮球 + +
自我介绍: + +
  + + +
+ +
+ + + + \ No newline at end of file diff --git "a/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1201jQuery\346\226\271\346\263\225\344\275\234\344\270\232.html" "b/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1201jQuery\346\226\271\346\263\225\344\275\234\344\270\232.html" new file mode 100644 index 0000000000000000000000000000000000000000..988cd4082ac6ffda04ca6692f22d3b054b942379 --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1201jQuery\346\226\271\346\263\225\344\275\234\344\270\232.html" @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + diff --git "a/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1128jQuery \344\272\213\344\273\266\347\254\224\350\256\260.md" "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1128jQuery \344\272\213\344\273\266\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..1e03863ff4b91235fdd3817df686f055580aac73 --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1128jQuery \344\272\213\344\273\266\347\254\224\350\256\260.md" @@ -0,0 +1,192 @@ +# jQuery 事件 + +#### onload事件 + +在JavaScript中,onload表示文档加载完成后再执行的一个事件。window.onload只能调用一次,如果多次调用,则只会执行最后一个。 + +```html +window.onload = function(){ +…… +} + +``` + +#### ready事件 + +​ 在jQuery中,ready也表示文档(document)加载完成后再执行的一个事件。 + +```html +$(document).ready(function(){ + …… +}) + +``` + +#### read事件的四种写法 + +``` +//写法1: +$(document).ready(function(){ +…… +}) +//写法2: +jQuery(document).ready(function(){ +…… +}) +//写法3(最常用): +$(function(){ +…… +}) +//写法4: +jQuery(function(){ +…… +}) + +``` + +常见 DOM 事件: + +| 鼠标事件 | 键盘事件 | 表单事件 | 文档/窗口事件 | +| :----------------------------------------------------------- | :----------------------------------------------------------- | :-------------------------------------------------------- | :-------------------------------------------------------- | +| [click](https://www.runoob.com/jquery/event-click.html) | [keypress](https://www.runoob.com/jquery/event-keypress.html) | [submit](https://www.runoob.com/jquery/event-submit.html) | [load](https://www.runoob.com/jquery/event-load.html) | +| [dblclick](https://www.runoob.com/jquery/event-dblclick.html) | [keydown](https://www.runoob.com/jquery/event-keydown.html) | [change](https://www.runoob.com/jquery/event-change.html) | [resize](https://www.runoob.com/jquery/event-resize.html) | +| [mouseenter](https://www.runoob.com/jquery/event-mouseenter.html) | [keyup](https://www.runoob.com/jquery/event-keyup.html) | [focus](https://www.runoob.com/jquery/event-focus.html) | [scroll](https://www.runoob.com/jquery/event-scroll.html) | +| [mouseleave](https://www.runoob.com/jquery/event-mouseleave.html) | | [blur](https://www.runoob.com/jquery/event-blur.html) | [unload](https://www.runoob.com/jquery/event-unload.html) | +| [hover](https://www.runoob.com/jquery/event-hover.html) | | | | + +------ + +## jQuery 事件方法语法 + +在 jQuery 中,大多数 DOM 事件都有一个等效的 jQuery 方法。 + +页面中指定一个点击事件: + +```js +$("p").click(); +``` + +下一步是定义了点击后触发事件。您可以通过一个事件函数实现: + +```js +$("p").click(function(){ // 动作触发后执行的代码!! }); +``` + + + +------ + +## 常用的 jQuery 事件方法 + +### $(document).ready() + +### click() + +click() 方法是当按钮点击事件被触发时会调用一个函数。 + +该函数在用户点击 HTML 元素时执行。 + +在下面的实例中,当点击事件在某个

元素上触发时,隐藏当前的

元素: + +```js +$("p").click(function(){ + $(this).hide(); +}); +``` + +当双击元素时,会发生 dblclick 事件。 + +dblclick() 方法触发 dblclick 事件,或规定当发生 dblclick 事件时运行的函数: + +```js +$("p").dblclick(function(){ + $(this).hide(); + }); +``` + +### mouseenter() + +当鼠标指针穿过元素时,会发生 mouseenter 事件。 + +mouseenter() 方法触发 mouseenter 事件,或规定当发生 mouseenter 事件时运行的函数: + +```js +$("#p1").mouseenter(function(){ + alert('您的鼠标移到了 id="p1" 的元素上!'); +}); +``` + +### mouseleave() + +当鼠标指针离开元素时,会发生 mouseleave 事件。 + +mouseleave() 方法触发 mouseleave 事件,或规定当发生 mouseleave 事件时运行的函数: + +```js +$("#p1").mouseleave(function(){ + alert("再见,您的鼠标离开了该段落。"); +}); +``` + +### mousedown() + +当鼠标指针移动到元素上方,并按下鼠标按键时,会发生 mousedown 事件。 + +mousedown() 方法触发 mousedown 事件,或规定当发生 mousedown 事件时运行的函数: + +```js +$("#p1").mousedown(function(){ + alert("鼠标在该段落上按下!"); +}); +``` + +### mouseup() + +当在元素上松开鼠标按钮时,会发生 mouseup 事件。 + +mouseup() 方法触发 mouseup 事件,或规定当发生 mouseup 事件时运行的函数: + +```js +$("#p1").mouseup(function(){ + alert("鼠标在段落上松开。"); +}); +``` + +### hover() + +hover()方法用于模拟光标悬停事件。 + +当鼠标移动到元素上时,会触发指定的第一个函数(mouseenter);当鼠标移出这个元素时,会触发指定的第二个函数(mouseleave)。 + +```js +$("#p1").hover(function(){ + alert("你进入了 p1!"); +}, function(){ + alert("拜拜! 现在你离开了 p1!"); +} ); +``` + +### focus() + +当元素获得焦点时,发生 focus 事件。 + +当通过鼠标点击选中元素或通过 tab 键定位到元素时,该元素就会获得焦点。 + +focus() 方法触发 focus 事件,或规定当发生 focus 事件时运行的函数: + +```js +$("input").focus(function(){ $(this).css("background-color","#cccccc"); + }); +``` + +### blur() + +当元素失去焦点时,发生 blur 事件。 + +blur() 方法触发 blur 事件,或规定当发生 blur 事件时运行的函数: + +```js +$("input").blur(function(){ $(this).css("background-color","#ffffff"); + }); +``` + diff --git "a/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1128jQuery\345\261\236\346\200\247\346\223\215\344\275\234\347\254\224\350\256\260.md" "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1128jQuery\345\261\236\346\200\247\346\223\215\344\275\234\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..9363a48a43633f7f8b4faeeffd934a1e462b8b75 --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1128jQuery\345\261\236\346\200\247\346\223\215\344\275\234\347\254\224\350\256\260.md" @@ -0,0 +1,166 @@ +# jQuery属性操作 + +#### **jQuery常用属性操作有三种:propl/attr()/data();** + +**1、元素固有属性值prop()** + +所谓元素固有属性就是元素本身自带的属性,比如元素里面的href,比如元素里面的type + +| 描述 | 语法 | +| ------------ | ---------------------- | +| 获取属性语法 | prop("属性") | +| 设置属性语法 | prop("属性" ,"属性值") | + +**注意:prop()除了普通性操作,更适合操作表单属性:disabled/checked/selected等。** + +**2、元素自定义属性值attr()** +用户自己给元然添加的属性,我们称为自定义属性,比如给 div添加index=1” + +| 描述 | 语法 | +| ------------ | --------------------------------------------- | +| 获取属性语法 | attr("属性") //类似原生getAttribute() | +| 设置属性语法 | attr("属性""属性值”) //类似原生setAttributef | + + **注意:attr() 除了普通属性操作,更适合操作自定义属性。(该方法也可以获取H5自定义属性)** + +#### 3、 数据缓存 data() + +data()方法可以在指定的元素上存取数据,并不会修改DOM 元素结构。一旦页面刷新,之前存放的数据都将被移除。 + +| 描述 | 语法 | +| ------------ | ------------------------------------------- | +| 附加数据语法 | data("name"""value") //向被选元素附加数据 | +| 获取数据语法 | data("name") //向被选元素获取数据 | + +**注意:同时,还可以读取 HTML5 自定义显性 data-index,得到的是数字型。** + +## jQuery 文本属性值 + +#### **常见操作有三种:html()/text()/val()** + +##### 1.普通元素内容html() (相当于原生innerHTML) + +html() //获取元素的内容 +html("内容") // 设置元素的内器 + +##### 2.普通元素文本内容 text()(相当与原生 innerText) + +text() // 获取元素的文本内容 +text("文本内容”) // 设置元素的文本内容 + +##### 3.表单的值val() (相当于原生value) + +val() // 获取表单的值 +val("内容') // 设置表单的值 +**注意:htmll 可识别标签,text不识到标签。** + +## jQuery元素操作 + +#### **1** **操作元素的属性** + +###### 1.1 获取属性 + +| 方法 | 说明 | 举例 | +| -------------- | ------------------------------------------------------------ | --------------------------------- | +| attr(属性名称) | 获取指定的属性值,操作checkbox时
选中返回checked,没有选中返回undefined。 | attr('checked')
attr('name') | +| prop(属性名称) | 获取具有true和false两个属性的属性值 | prop('checked') | + +属性的分类: + +- 固有属性: +- 返回值是bool的属性: checked ,selected, disabled +- 自定义属性 + +###### 1.2 设置属性 + +```html +attr('属性名','属性值') +``` + + + +###### 1.3 移除属性 + +```html +removeAttr('属性名') +``` + +#### 2 操作元素的样式 + +​ 对于元素的样式,也是一种属性,由于样式用得特别多,所以对于样式除了当做属性处理外还可以有专门的方法进行处理。 + +| 方法 | 说明 | +| ---------------------- | --------------------------- | +| attr('class') | 获取属性的值,即样式名称 | +| attr('class','样式名') | 修改class属性的值,修改样式 | +| addClass('样式名') | 添加样式名称 | +| **css()** | 添加具体的样式 | +| removeClass(class) | 移除样式名称 | + +其中,css()表示增加具体样式: + +```html +1) css('样式名','样式值') + 例: css('color','red') + +2) css({'样式名':'样式值','样式名2':'样式值2'}) + 例: css({'background-color':'red','color':'red'}) +``` + +#### 3 操作元素内容 + +| 方法 | 说明 | +| ----------------- | ---------------------------------- | +| html() | 获取元素的html内容 | +| html('html内容') | 设定元素的内容 | +| text() | 获取元素的内容,不识别html标签 | +| text('text 内容') | 设置元素的文本内容,不识别html标签 | +| val() | 获取元素的值(表单元素) | +| val('值') | 设定元素的值 | + +常见的表单元素(可以操作的):文本框,密码框,单选框,复选框,隐藏域,文本域,下拉框 + +非表单元素:div,span,h1~h6,table,tr,td,li,p等 + +#### 4 创建元素 + +​ 在jQuery创建元素很简单,直接使用核心函数即可 + +```html +$('元素内容'); +``` + +``` +$('

this is a paragraph!!!

') +``` + +#### 5 添加元素 + +| 方法 | 说明 | +| ------------------------------ | ------------------------------------------------------------ | +| prepend(content) | 在被选元素内部的开头插入元素或内容,被追加的content参数,可以是字符,HTML元素标记。 | +| $(content).prependTo(selector) | 把content元素或内容加入selector元素开头 | +| append(content) | 在被选元素内部的结尾插入元素或内容, 被追加的content参数,可以是字符,HTML元素标记。 | +| $(content).appendTo(selector) | 把content元素或内容插入slector元素内,默认是在尾部 | +| before() | 在元素前插入指定的元素或内容: $(selector).before(content) | +| after() | 在元素后插入指定的元素或内容: $(selector).after(content) | + +#### 6 删除元素 + +| 方法 | 说明 | +| -------- | ---------------------------------------------------- | +| remove() | 删除所选元素或指定的子元素,包括整个标签和内容一起删 | +| empty() | 清除所选元素的内容 | + +#### 7 遍历元素 + +each() + +$(selector).each(function(index,element)):遍历元素 + +参数function为遍历时的回调函数 + +index 为遍历元素的序列号,从0开始 + +element为当前的元素(===this),此时是dom元素 + diff --git "a/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1130jQuery\344\272\213\344\273\266\345\257\271\350\261\241\347\254\224\350\256\260.md" "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1130jQuery\344\272\213\344\273\266\345\257\271\350\261\241\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..d049efb9aee7941a73735e974986dcdce2a1a0ac --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1130jQuery\344\272\213\344\273\266\345\257\271\350\261\241\347\254\224\350\256\260.md" @@ -0,0 +1,310 @@ +# 事件对象 + +### jQuery事件绑定扩展 + +#### 绑定事件的三种类型 + +##### 直接绑定(最简单也是最常用) + +语法: + +```js +$(selector).event(function(){}) +``` + +##### bind绑定 + +语法: + +```js +$(selector).off(event,selector,function(eventObj),map) +``` + +```html +eg:对btn进行绑定点击事件 + +``` + +##### on()绑定 + +在jQuery中,我们可以使用on()方法为“已经存在的元素”绑定事件。 + +语法: + +```js +$(selector).on(event,childSelector,data,function) +``` + +on绑定与前两个绑定最大的区别是on可以为动态创建的元素绑定事件 + +```html +<--eg:对.btn进行绑定点击事件,点击.btn后会新增另一个.btn按钮--> + +``` + + + +##### 合成事件hover + +通常来说,mouseover和mouseout是一对形影不离的事件,而且实际工作中用的比较多。所以jQuery中定义了hover事件表示这两事件的触发 + +语法: + +```js +$().hover(fn1, fn2) +``` + +参数fn1表示鼠标移入事件触发的处理函数,参数fn2表示鼠标移出事件触发的处理函数。 + + + +##### 解绑事件 + +我们可以使用off()方法来解除元素绑定的事件。jQuery的off()方法,有点类似于JavaScript的 + +removeEventListener()方法。 + +语法: + +```html +$(selector).off(type) 移除所有事件:off() +``` + +​ type是可选参数,表示事件类型。例如单击事件是"click",按下事件是"mousedown",以此类推。如果参数省略,表示移除当前元素中的所有事件。 + +​ 此外,off()方法不仅可以用来解除使用“基本事件”方式添加的事件,还可以用来解除“绑定事件”添加的事 + +件。 + +```html +
+ +``` + + + +##### 一次事件 + +语法: + +```js +$(selector).one(type, fn) +``` + +```html +<--eg:使按钮只点击一次--> + +``` + +## + +**事件对象**就是 event 对象,通过处理函数默认传递接受。之前处理函数的 e 就是 event事件对象,event 对象有很多可用的属性和方法。 + +```js +//通过 event.type 属性获取触发事件名 + +$('input').click(function (e) { + +alert(e.type); + +}); + +//通过 event.data 获取额外数据,可以是数字、字符串、数组、对象 + +$('input').bind('click', **123**, function () {   //传递 data 数据 + +alert(e.data);       //获取数字数据123 + +}); +``` + +**注意:如果字符串就传递:'123'、如果是数组就传递:[123,'abc'],如果是对象就传递:{user : 'Lee', age : 100}。数组的调用方式是:e.data[1],对象的调用方式是:e.data.user。** + +**//event.data** **获取额外数据,对于封装的简写事件也可以使用** + +```js +$('input').click({user : 'Lee', age : 100},function (e) +{ + alert(e.data.user); +}); +``` + +**注意:键值对的键可以加上引号,也可以不加;在调用的时候也可以使用数组的方式:alert(e.data['user']);** + +**区别:target****,currentTarget****,relatedTarget:** + +```js +//通过 event.target 获取触发事件的 DOM 元素 + +$('input').click(function (e) { + +alert(e.target); + +}); + +//relatedTarget获取临近元素 + +//获取移入到 div 之前的那个 DOM 元素 + +$('div').mouseover(function (e) { + +alert(e.relatedTarget); + +}); + +//获取移出 div 之后到达最近的那个 DOM 元素 + +$('div').mouseout(function (e) { + +alert(e.relatedTarget); + +}); + +//获取绑定的那个 DOM 元素,相当于 this,区别与 event.target + +$('div').click(function (e) { + +alert(e.currentTarget); + +}); +``` + +**注意:event.target 得到的是触发元素(比如点击事件,即具体点击的那个元素)的 DOM,event.currentTarget 得到的是监听元素(即绑定的那个元素)的DOM。相当于this, this 也是得到监听元素的 DOM。** + +```js +//result获取上一次相同事件的返回值 + +$('div').click(function (e) { + +return '123'; + +}); + +$('div').click(function (e) { + +alert(e.result); + +}); + +//which获取鼠标的左中右键 + +$('div').mousedown(function (e) { + +alert(e.which); + +}); + +//which获取键盘的按键 + +$('input').keyup(function (e) { + +alert(e.which); + +}); + +//获取触发元素鼠标当前的位置 + +$(document).click(function (e) { + +alert(e.screenY+ ',' + e.pageY + ',' + e.clientY); + +}); +``` + +**注意:pageX和pageY获取的是距离页面原点的位置;screenX和screenY获取的是距离显示屏的位置;clientX和clientY获取的是距离页面视口的距离。在没有滚动条的时候,pageY和clientY在数值上是一样的。当有滚动条的时候,pageY会明显变大,因为它是相对于页面原点。** + +**二.冒泡和默认行为** + +**阻止冒泡:** + +如果在页面中重叠了多个元素, 并且重叠的这些元素都绑定了同一个事件, 那么就会出现冒泡问题。 + +示例: + +**//HTML** **页面** + +``` +
+ +
+ //三个不同元素触发事件 + + $('input').click(function () { + + alert('按钮被触发了!'); + + }); + + $('div').click(function () { + + alert('div 层被触发了!'); + + }); + + $(document).click(function () { + + alert('文档页面被触发了!'); + + }); +``` + +**PS:当我们点击文档的时候,只触发文档事件;当我们点击 div 层时,触发了 div 和文档两个;当我们点击按钮时,触发了按钮、div 和文档。触发的顺序是从小范围到大范围。这就是所谓的冒泡现象,一层一层往上。** + +jQuery 提供了一个事件对象的方法:**event.stopPropagation()**;这个方法设置到需要触发的事件上时,所有上层的冒泡行为都将被取消。 + +```js +$('input').click(function (e) { + +  alert('按钮被触发了!'); + +  **e.stopPropagation();** + +}); +``` + +**阻止默认行为:** + +网页中的元素,在操作的时候会有自己的默认行为。比如:右击文本框输入区域,会弹出系统菜单、点击超链接会跳转到指定页面、点击提交按钮会提交数据。 + +```js +//阻止超链接进行跳转 + +$('a').click(function (e) { + +  **e.preventDefault();** + +}); + +//禁止提交表单跳转(注意是在form上阻止) + +$('form').submit(function (e) { + +  **e.preventDefault();** + +}); +``` + +**PS: 如果想让上面的超链接同时阻止默认行为且禁止冒泡行为, 可以把两个方法同时写上: event.stopPropagation()和 event.preventDefault()。 这两个方法如果需要同时启用的时候,还有一种简写方案代替,就是直接 return false。** + +```js +$('a').click(function (e) { +  **return false;** +}); +``` + +#### jQuery事件冒泡 + +**jQuery实现不了事件捕获** + +阻止事件冒泡:**event.stopPropagation()** + +阻止默认行为:event.preventDefault() + +```js +eg:阻止form表单提交 +$('form').submit(function (e) { +  e.preventDefault(); + +}); +``` + diff --git "a/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1201jQuery\346\226\271\346\263\225\347\254\224\350\256\260.md" "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1201jQuery\346\226\271\346\263\225\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..dce69bb5be86feac97824102045e63a6d288ed27 --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1201jQuery\346\226\271\346\263\225\347\254\224\350\256\260.md" @@ -0,0 +1,429 @@ +# jQuery方法 + +### **1.HTML()方法** + +HTML()方法相当于原生JS中的innerHTML属性,用来获取/设置标签内部内容 + +语法:jQuery对象.html(‘文本内容’) + +### **2.text()方法** + +text()方法相当于原生JS中的innerText属性,用来获取/设置标签内部文字 + +获取:仅仅是文本,获取所有文字内容,忽略标签 + +语法:jQuery对象.text() + +设置:设置标签时,标签会被当做普通文本,不会按照标签加载 + +语法:jQuery对象.text(‘文本内容’) + +### **3.val()方法** + +val()方法相当于原生JS中的value属性,用来获取/设置表单元素内容 + +获取:表单元素的value + +语法:jQuery对象.val() + +设置:表单元素的value + +语法:jQuery对象.val(‘文本内容’) + + + +### **4.attr()方法** + +用来获取/设置标签的属性值 + +设置标签的属性 + +语法:jQuery对象.attr(name,value) + +获取标签属性值 + +语法:jquery对象.attr(name) + +### **5.removeAttr()方法** + +移除标签的属性 + +语法:removeAttr(name) + + + +### **6.prop()方法** + +### **直接操作的就是布尔值** + +针对:selected、checked、disabled等表单元素的属性。此类属性的属性值与属性名相同 + +获取: + +语法:$(‘input’).prop(‘属性名’) + +设置: + +语法:$(‘input’).prop(‘属性名’,值) + +------ + +### **操作样式方法** + +### **css()方法** + +jQuery对象有一个css()方法,用于调用css属性值/更改css属性值 + +语法:jQuery对象.css(name,value) + +参数1:字符串格式的css样式属性名 + +参数2:设置/更改的属性值 + +### **注意:** + +1.一个参数:表示调用css属性的值,得到的是某个元素的计算后样式,值为字符串格式 + +2.两个参数:表示设置css样式属性,第二个参数可以是字符串格式的属性值,如果带单位的数字的属性值,可以写成带单位的字符串格式、不带单位的字符串、纯数字、带+=等赋值运算的字符串 + +css()方法的第一个参数,复合属性的单一属性写法可以是驼峰命名法,也可以是横线写法 + +可以给同一个对象同时设置多条css属性,将多条属性的属性和属性值写成对象格式,传给css()的参数 + +------ + +### **操作类名方法** + +### **jQuery中的类名控制方法,只会操作指定的类名,不会影响其他类名** + +### **1.addClass()添加类名** + +语法:jQuery对象.addClass(‘类名’) + +参数:字符串格式的类名 + +### **2.removeClass()移除类名** + +删除指定的类名 + +语法:jQuery对象.removeClass() + +参数:字符串格式的类名 + +不传参数,表示删除所有的类名 + +### **3.toggleClass()类名切换** + +这个类名存在,会移除该类名。否则添加该类名 + +语法:jQuery对象.toggleClass(‘类名’) + +参数:字符串格式的类名 + +优点:三个方法只操作参数部分的类名,不影响原有的其他类名 + + + +### **4.hasClass()检测类名是否存在** + +语法:jQuery对象.hasClass(‘类名’) + +返回值:true、false + +------ + +## **jQuery常用事件方法** + +jQuery对象封装了一系列的事件方法 + +事件方法与原生JS事件方法名称类似,不需要写on + +事件方法需要jQuery对象打点调用,小括号内的参数是事件函数 + +列:点击事件:click()方法 + +### **1.mouseenter()方法** + +jQuery中自己的事件方法 + +鼠标进入一个元素触发的事件 + +### **2.mouseleave()方法** + +jQuery中自己的事件方法 + +鼠标离开一个元素触发事件 + +### **注意:mouseenter和mouseleave没有事件冒泡** + +### **在使用时替换mouseover和mouseout更加合适** + +### **3.hover()方法** + +hover事件相当于将mouseenter和mouseleave事件进行了合写 + +参数:有两个参数,第一个参数是鼠标移上执行的事件函数,第二个参数是鼠标离开执行事件函数 + + + +### **jQuery关系查找方法** + +### **1.$(this)自己** + +在原生的DOM操作中,事件函数内部有一个this关键字指向的就是触发事件的事件源,在jQuery中将this关键字传递给$() + +方法,得到就是指向自己的jQuery对象,可以使用JQ方法 + +### **2.parent()父级** + +jQuery对象都有一个parent()方法,得到的是自己的父级 + +父级得到的也是一个jQuery对象,直接继续打点调用JQ方法和属性 + +```js + // 获取所有p标签 + var $p = $("p") + + // 批量添加事件 + $p.click(function () { + // this 指向的触发事件的事件源的原生JS对象 + $(this).css("backgroundColor","red")// 让点击的自己颜色 变红色 + + // 找到事件源的父级元素 添加一个黄色背景 + $(this).parent().css("backgroundColor","yellow") + }) +``` + +### **3.children()子级** + +jQuery对象内部有一个children()方法,可以得到自己的所有子级元素组成的jQuery对象 + +得到子级组成的jQuery对象可以继续调用JQ方法和属性 + +获得子级时,不限制标签类型 + +children()可以传参数:参数是字符串格式的选择器,在选中所有子级的情况下,保留满足选择器的部分,进行了二次选择 + +### **4.siblings()兄弟** + +jQuery对象通过调用siblings()方法可以得到除了自己以外的所有同级元素(兄弟)组成jQuery对象,找到的 + +只能是亲的兄弟,不能是叔叔家的兄弟 + +得到jQuery对象可以继续使用JQ的方法和属性 + +siblings()方法得到的jQuery对象可以进行二次选择,通过给参数传递字符串格式的选择器 + +### **4.siblings()兄弟** + +jQuery对象通过调用siblings()方法可以得到除了自己以外的所有同级元素(兄弟)组成jQuery对象,找到的 + +只能是自己父亲的兄弟,不能是隔壁其他父级的兄弟 + +得到jQuery对象可以继续使用JQ的方法和属性 + +siblings()方法得到的jQuery对象可以进行二次选择,缩小范围,通过给参数传递字符串格式的选择器 + +## **其他节点关系方法** + +### **find()后代元素** + +jQuery对象可以利用find()方法,传递一个参数,参数部分规定的选择器,查找范围是jQuery对象的所有后代 + +参数是字符串格式的选择器 + +### **兄弟元素** + +### **紧邻的兄弟元素方法** + +next()下一个兄弟 + +prev()前一个兄弟 + +### **多选方法** + +nextAll()后面所有的兄弟 + +prevAll()前面所有兄弟 + +通过传递参数可以进行二次选择,参数是字符串格式的选择器,在前面/后面兄弟中选中符合选择器规定的部分 + +#### parent():找直接父级 + +#### parents():找所有父级() + +#### parentsUntil(''):找 + +parentsUntil()方法是parents()方法的一个补充,它可以查找“指定范围”的所有祖先元 素,相当于在parents()方法返回的集合中截取一部分。 + +语法: + +```js +$().parentsUntil(selecotr) +``` + + + +### **1.eq()方法,大排序** + +jQuery中获得的对象,内部包含选择一组原生JS对象,在jQuery对象中会进行一个大排序,这个排序与原来的HTML结构没有关系 + +eq()方法在jQuery对象中通过下标获取某个对象,下标是jQuery对象中的大的排序的下标 + +```js +$().eq(n) +``` + +#### 判断过滤: is() + +​ 判断过滤,指的是根据某些条件进行判断,然后选取符合条件的元素。在jQuery中,我们可以使用is()方法来实现判断过滤。 + +语法: + +```js +$().is(selector) +``` + +说明: + +参数selector是一个选择器。is()方法用于判断当前选择的元素集合中,是否存在符合条件的元素。 + +如果存在,则返回true;如果不存在,则返回false。 + +```js +//判断元素是否可见 +$().is(":visible") +//判断元素是否处于动画中 +$().is(":animated") +//判断单选框或复选框是否被选中 +$().is(":checked") +//判断当前元素是否第一个子元素 +$(this).is(":first-child") +//判断文本中是否包含jQuery这个词 +$().is(":contains('jQuery')") +//判断是否包含某些类名 +$().is(".select") +``` + + + +### **2.index()方法** + +jQuery对象调用index()方法时,得到的是它自己在HTML结构中的兄弟的下标位置。和jQuery大排序没有关系 + +index()方法获取下标时,排序跟新生成的jQuery对象无关 + +依赖于自身元素在父级中同级元素之间的位置 + +### **3.排他方法** + +jQuery中可以让this特殊设置,让兄弟siblings设置成默认 + +### **4.each()方法** + +jQuery对象进行的操作都是批量操作,批量操作只能执行一些简单的效果 + +如果想对JQ对象中的每一个元素以及内部的后代元素进行一些复杂操作,程序很难执行 + +参数是一个函数 + +作用:就是对jQuery对象中的元素每一个都执行函数内部的操作 + +each方法的基本原理就是for循环,从对象的下标为0的项一直便历到最后一项,然后对每一项进行操作 + +### **优点:** + +1.each的函数内部,也有一个this,指向的是进来遍历的每一次的元素 + +2.each的函数可以传一个参数i,i表示的是这一次的遍历对象在整体的jQuery对象大排队中的下标位置 + +```js +------------------------------------隔行变色案例----------------------------------------- + +// 方法1 + // var $tr = $("tr"); + // $tr.each(function(){ + // //让子级所有的列 个列变色 + // $(this).children(":even").css("backgroundColor","skyblue") + // }) + + //方法2 操作td + $("td").each(function() { + // 可以判断当前这个td在父级中所处的位置 + // 获取父级中的位置 index() + if($(this).index() % 2 === 0 ){ + $(this).css("backgroundColor","skyblue") + } + }) +``` + +------ + +## **jQuery入口函数** + +### **入口函数** + +### **1.原生的window.onload** + +onload事件在加载时,指的是页面中所有的资源【DOM树、音频、视频、图片等】加载完毕后,才能触发 + +一个页面中只能出现一次 + +### **2.jQuery中的入口函数** + +仅仅需要等待页面中DOM树加载完毕就可以执行了 + +在一个页面中可以书写多个jQuery的入口函数,执行顺序按照前后加载顺序执行 + +语法1: + +```js +$(document).ready(function(){ + //获取元素 +}) +``` + +#### DOM创建元素 + +- DOM创建: var $p = $('

这是一段文本

>') +- 插入元素 +- prepend() 和 prependTo() +- append() 和 appendTo() +- before() 和insertBefore() +- after() 和 insertAfter() + + + +#### 删除元素 + +##### remove():全部删除 + +##### detach():删除,保留事件 + +##### empty():清空元素,保留标签 + +#### 复制元素 + +语法: + +```js +$().clone(bool): true:深拷贝将事件和元素一起拷贝 false:只拷贝元素 +``` + + + +#### 替换元素 + +##### replaceWith() + +##### replaceAll() + + + +#### 包裹元素 + +##### wrap() + +##### wrapAll() + +##### wrapInner() \ No newline at end of file diff --git "a/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1202AJax\347\254\224\350\256\260.md" "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1202AJax\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..6b17cf1269efbb3b6fb6ece8c1e8d00f51d3522d --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1202AJax\347\254\224\350\256\260.md" @@ -0,0 +1,117 @@ +# AJax + +#### 执行步骤 + +1.创建xhr对象 + +```js +const xhr = new XMLHttpRequest(); +``` + +2.利用onreadystatechange属性,封装一个函数,用于监听 readyState的变化。 + +```js +xhr.onreadystatechange = () => { +if (xhr.readyState !== 4) return; +if (xhr.status >= 200 && xhr.status < 300 ){ + console.log(xhr.responseText); + } +}; +``` + +2.1在xhr对象执行收发数据的时候,它会经历五种状态: + +Ajax状态码 状态 +0 (未初始化)未启动 +1 (启动)已经调用 open(),但尚未调用 send() +2 (发送)发送状态,已经调用 send(),但尚未接收到响应 +3 (接收)已经接收到部分响应数据 +4 (完成)已经接收到全部响应数据,而且已经可以在浏览器中使用了 +加两句console.log()就可以看见状态码的变化了。 + + + +上述的readyStateChange事件是专门用来监听xhr对象的Ajax状态码,只要readyState(也就是Ajax状态码)发生了变化,就会触发这个事件。 + + + +2.2判断HTTP状态码是否为200-299 + +Ajax状态码为4是不够的,这仅仅表明收到服务器端响应的全部数据,并不能保障数据都是正确的。 + +所以,我们还需要判断HTTP的状态码,判断xhr对象的status属性值是否在200到300之间(200-299 用于表示请求成功) + +```js +if (xhr.status >= 200 && xhr.status < 300 ){ + console.log(xhr.responseText); +} +``` + +所以要想请求成功完成,必须要满足上面两个条件。 + +3.准备发送请求 + +```js +xhr.open('GET','text.json', true); +``` + +参数1:选用"GET"或者“POST”的请求方式js + +参数2:发送请求的地址 + +参数3:是否异步 + +4.发送请求 + +```js +xhr.send(null) +``` + + 注意:send() 的参数是通过请求体携带的数据,而GET请求是通过请求头携带数据的,所以要把send的参数置为null + +#### $.get() + +语法: + +```js +$.get(url, data, fn, type) +``` + +| 参数 | 说明 | +| :--: | :--------------------------------- | +| url | 必选参数,表示被加载的页面地址 | +| data | 可选参数,表示发送到服务器的数据 | +| fn | 可选参数,表示请求成功后的回调函数 | +| type | 可选参数,表示服务器返回的内容格式 | + +参数type返回的内容格式包括:text、html、xml、json、script或default。 + + + +#### $.post() + +get方式不适合较大的数据量,并且它的请求信息会保存在浏览器缓存中,因此安全性不好; + +post方式不存在这两个方面的不足。 + +语法: + +``` +$.post(url,data,fn,type) +``` + +#### $.getJSON() + +在jQuery中,我们可以使用$.getJSON()方法来通过Ajax获取服务器中JSON格式的数据。 + +语法: + +``` +$.getJSON(url ,data, function(data){ +…… +}) + +``` + +说明: .getJSON()是一个全局方法,所谓“全局方法”,指的是直接定义在jQuery对象(即“$”)下的方法。 参数url表示被加载的文件地址;参数data表示发送到服务器的数据,数据为“键值对”格式;参数fn表示 请求成功后的回调函数,请求失败是不会处理的。 +