diff --git "a/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/20jQuery \344\272\213\344\273\266.md" "b/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/20jQuery \344\272\213\344\273\266.md" new file mode 100644 index 0000000000000000000000000000000000000000..c050a4b36dadecdb8006e411bc45653c9cfe73cc --- /dev/null +++ "b/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/20jQuery \344\272\213\344\273\266.md" @@ -0,0 +1,277 @@ +## jQuery 事件 + +#### onload事件 + +在JavaScript中,onload表示文档加载完成后再执行的一个事件。window.onload只能调用一次,如果多次调用,则只会执行最后一个。 + +```html +window.onload = function(){ +…… +} + +``` + +对于JavaScript的onload事件来说,只有当页面所有DOM元素以及所有外部文件(图片、外部 CSS、外部JavaScript等)加载完成之后才会执行。这里的所有DOM元素,指的是HTML部分的代码。 + +#### ready事件 + +​ 在jQuery中,ready也表示文档(document)加载完成后再执行的一个事件。 + +```html +$(document).ready(function(){ + …… +}) + +``` + +​ 对于jQuery的ready事件来说,只要页面所有DOM元素加载完成就可以执行,不需要再等外部文件 (图片、外部CSS、外部JavaScript)加载完成。 + +#### read事件的四种写法 + +``` +//写法1: +$(document).ready(function(){ +…… +}) +//写法2: +jQuery(document).ready(function(){ +…… +}) +//写法3(最常用): +$(function(){ +…… +}) +//写法4: +jQuery(function(){ +…… +}) + +``` + + + +#### 鼠标事件 + +在jQuery中,常见的鼠标事件如下表: + +| 事件 | 说明 | +| --------- | ------------ | +| click | 鼠标单击事件 | +| dblclick | 鼠标双击事件 | +| mouseover | 鼠标移入事件 | +| mouseout | 鼠标移出事件 | +| mousedown | 鼠标按下事件 | +| mouseup | 鼠标松开事件 | +| mousemove | 鼠标移动事件 | +| | | + +​ + +hover:mouseover+mousedown + +​ jQuery 事件比JavaScript事件只是少了“on”前缀。例如鼠标单击事件在JavaScript中是onclick,而在jQuery中是 click。 + +​ jQuery事件的语法很简单,我们都是往事件方法中插入一个匿名函数function(){} + + + + + +#### 鼠标单击 + +​ 单击事件不只是按钮才有,我们可以为任何元素添加单击事件! + +```html + + + + + + + + + + + +
调试代码
+ + + +``` + + + +**练习:有单击事件:alert('我是单击') 有双击事件 alert('我是双击')** + +**思考:如何触发双击事件时不触发单击事件** + + + +#### 鼠标移入移出 + +​ 当用户将鼠标移入到某个元素上面时,就会触发mouseover事件。如果将鼠标移出某个元素时,就 会触发mouseout事件。mouseover和mouseout平常都是形影不离的。 + +```js +//鼠标到文字上变色,移开变色 +
Javascript
+``` + + + +**练习:一级菜单--》二级菜单** + + + +#### 鼠标按下和松开 + +​ 当用户按下鼠标时,会触发mousedown事件;当用户松开鼠标时,则会触发mouseup事件。 mousedown表示鼠标按下的一瞬间所触发的事件,而mouseup表示鼠标松开的一瞬间所触发的事 件。当然我们都知道,只有“先按下”才能“再松开”。 + + + +#### 键盘事件 + +在jQuery中,常用的键盘事件共有2种。 + +1. 键盘按下:keydown + +2. 键盘松开:keyup + +keydown表示键盘按下一瞬间所触发的事件,而keyup表示键盘松开一瞬间所触发的事件。对于键盘来 + +说,都是先有“按下”才有“松开”,也就是keydown发生在keyup之前。 + +```html + + + + + + + + + + + + +
字符串长度为: 0
+ + + +``` + + + +#### 表单事件 + +##### 1. focus和blur + +focus表示获取焦点时触发的事件,而blur表示失去焦点时触发的事件,两者是相反操作。 + +focus和blur这两个事件往往都是配合一起使用的。例如用户准备在文本框中输入内容时,此时它会获得 + +光标,就会触发focus事件。当文本框失去光标时,就会触发blur事件。 + +并不是所有的HTML元素都有焦点事件,具有“获取焦点”和“失去焦点”特点的元素只有两种。 + +1. **表单元素(单选框、复选框、单行文本框、多行文本框、下拉列表)** + +2. **超链接** + +判断一个元素是否具有焦点很简单,我们打开一个页面后按Tab键,能够选中的就是带有焦点特性的元 + +素。在实际开发中,焦点事件(focus和blur)一般用于单行文本框和多行文本框,其他地方比较少见。 + +```html + + + + + + + + + + + + + + +``` + + + +##### 2. select + +在jQuery中,当我们选中“单行文本框”或“多行文本框”中的内容时,就会触发select事件。 + +```html + + + + + + + + + + + +
+ + + + +``` + + + +##### **3. change** + +在jQuery中,change事件常用于“具有多个选项的表单元素”。 + +1. 单选框选择某一项时触发。 +2. 复选框选择某一项时触发。 +3. 下拉菜单选择某一项时触发。 + +```html + + + + + + + + + + +
+ + + +
+

+ + + +``` + + + diff --git "a/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/21jQuery\344\272\213\344\273\266\345\257\271\350\261\241.md" "b/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/21jQuery\344\272\213\344\273\266\345\257\271\350\261\241.md" new file mode 100644 index 0000000000000000000000000000000000000000..050298292ebefbf292f66dbc77455e25a25a8e0d --- /dev/null +++ "b/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/21jQuery\344\272\213\344\273\266\345\257\271\350\261\241.md" @@ -0,0 +1,209 @@ +## jQuery事件对象 + +### jQuery事件绑定扩展 + + + +#### 绑定事件的三种类型 + +##### 直接绑定(最简单也是最常用) + +语法: + +```js +$(selector).event(function(){}) +``` + +##### bind绑定 + +语法: + +```js +$(selector).off(event,selector,function(eventObj),map) +``` + + ![img](https://upload-images.jianshu.io/upload_images/14415740-c70031137be2807f.png?imageMogr2/auto-orient/strip|imageView2/2/format/webp) + +```html +eg:对btn进行绑定点击事件 + +``` + + + +##### on()绑定 + +在jQuery中,我们可以使用on()方法为“已经存在的元素”绑定事件。 + +语法: + +```js +$(selector).on(event,childSelector,data,function) +``` + +​ on绑定与前两个绑定最大的区别是on可以为动态创建的元素绑定事件 + + ![img](https://upload-images.jianshu.io/upload_images/14415740-79322a66d202034e.png?imageMogr2/auto-orient/strip|imageView2/2/format/webp) + +```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:使按钮只点击一次--> + +``` + +### + + + +### jQuery事件对象 + + + + + +#### 事件对象 + +​ 当一个事件发生的时候,这个事件有关的详细信息都会临时保存到一个指定的地方,这个地方就是 event对象。每一个事件,都有一个对应的event对象。给大家打个比喻,我们都知道飞机都有黑匣子, 对吧?每次飞机出事(一个事件)后,我们都可以从黑匣子(event对象)中获取详细的信息。 + +​ 在jQuery中,我们可以通过event对象来获取一个事件的详细信息。以下是常用的属性: + +| 属性 | 说明 | +| :----------: | :--------------: | +| type | 事件类型 | +| target | 事件元素 | +| which | 鼠标左,中,右键 | +| pageX,pageY | 鼠标坐标 | +| shiftKey | 是否按下shift键 | +| altKey | 是否按下alt键 | +| keyCode | 键码值 | +| | | + +##### event.type + +在jQuery中,我们可以使用event对象的type属性来获取事件的类型。 + +##### event.which + +在jQuery中,我们可以使用event对象的which属性来获取单击事件中鼠标的左、中、右键。 + +说明: +event.which会返回一个数字,其中1表示左键,2表示中键,3表示右键。 + +```js + + + + + + + + + + +百度一下 + + +``` + + + +##### shiftKey/altKey/ctrlKey + +``` +eg:禁止使用Shfit、Ctrl、Alt键 +``` + +#### 键码值keyCode + +``` +eg:获取“上、下、左、右”方向键 +``` + +##### event.target + +在jQuery中,我们可以使用event对象的target属性来获取触发事件的元素。 + +**面试题:****event.target 和 event.currenttarget与delegatetarget的区别** + + + + + +#### jQuery事件冒泡 + +**jQuery实现不了事件捕获** + +阻止事件冒泡:**event.stopPropagation()** + +阻止默认行为:event.preventDefault() + +```js +eg:阻止form表单提交 +$('form').submit(function (e) { +  e.preventDefault(); + +}); +``` + diff --git "a/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/22jQuery\346\226\271\346\263\225.md" "b/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/22jQuery\346\226\271\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..58d7e28806f1877fc19cde73e9bd6b1cfc7d6f82 --- /dev/null +++ "b/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/22jQuery\346\226\271\346\263\225.md" @@ -0,0 +1,444 @@ +## jQuery方法 + +### 元素方法 + +#### 遍历元素each() + +在操作DOM时,很多时候我们需要对“同一类型”的所有元素进行相同的操作。如果使用JavaScript来实现,我们往往都是先获取元素的长度,然后使用循环来访问每一个元素,代码量比较大。在jQuery中,我们可以使用each()方法轻松实现元素的遍历操作。 + +语法: + +```js +$('li').each(function(index, element){ …… }) +``` + +each()方法接收一个匿名函数作为参数,该函数有两个参数:index,element。 + +index是一个可选参数,它表示元素的索引号(即下标)。通过形参index以及配合this关键字,我 + +们就可以轻松操作每一个元素。此外注意一点,形参index是从0开始的。 + +element是一个可选参数,它表示当前元素,可以使用(this)代替。也就是说,(element)等价于 + +$(this)。 + +如果需要退出each循环,可以在回调函数中返回false,也就是return false即可。 + + + + + +练习:为每个li设置不同的背景颜色 + +var colors=["red","orange","yellow","green","blue"]; + +``` + + + + + + + + + + + + + + +``` + +#### DOM创建元素 + +- DOM创建: var $p = $('

这是一段文本

>') +- 插入元素 +- prepend() 和 prependTo() +- append() 和 appendTo() +- before() 和insertBefore() +- after() 和 insertAfter() + + + +#### 删除元素 + +##### remove():全部删除 + +##### detach():删除,保留事件 + +##### empty():清空元素,保留标签 + +#### 复制元素 + +语法: + +``` +$().clone(bool): true:深拷贝将事件和元素一起拷贝 false:只拷贝元素 +``` + + + +#### 替换元素 + +##### replaceWith() + +##### replaceAll() + + + +#### 包裹元素 + +##### wrap() + +##### wrapAll() + +##### wrapInner() + +### 过滤方法 + +#### 类名过滤: hasClass() + +​ 类名过滤,指的是根据元素的class来过滤。在jQuery中,我们可以使用hasClass()方法来实现类名 + +过滤。语法: + +```html +$().hasClass(“类名”) +``` + +hasClass()方法一般用于判断元素是否包含指定的类名:如果包含,则返回true;如果不包含,则 +返回false。 + + + +#### 下标过滤: eq() + +​ 下标过滤,指的是根据元素集合的下标来过滤。在jQuery中,我们可以使用eq()方法来实现下标过 滤。 + +语法: + +```js +$().eq(n) +``` + +​ 说明: n是一个整数,从0开始。当取值为正整数时,eq(0)获取的是第1个元素,eq(1)获取的是第2个元素,……,以此类推。 当取值为负整数时,eq(-1)获取的是倒数第1个元素,eq(-2)获取的是倒数第2个元素,……,以此类 推。 + +#### 判断过滤: is() + +​ 判断过滤,指的是根据某些条件进行判断,然后选取符合条件的元素。在jQuery中,我们可以使用is()方法来实现判断过滤。 + +语法: + +``` +$().is(selector) +``` + +说明: + +参数selector是一个选择器。is()方法用于判断当前选择的元素集合中,是否存在符合条件的元素。 + +如果存在,则返回true;如果不存在,则返回false。 + +```js +//判断元素是否可见 +$().is(":visible") +//判断元素是否处于动画中 +$().is(":animated") +//判断单选框或复选框是否被选中 +$().is(":checked") +//判断当前元素是否第一个子元素 +$(this).is(":first-child") +//判断文本中是否包含jQuery这个词 +$().is(":contains('jQuery')") +//判断是否包含某些类名 +$().is(".select") +``` + +练习:全选反选 + +```js + + + + + + + + + + + +
+

+ + + +
+ + + +``` + +#### 反向过滤: not():排除符合条件的 + +在jQuery中, 我们还可以使用not()方法来过滤“不符合条件”的元素,并且返回余下符合条件的元素。 + +其中,not()方法可以使用选择器过滤,也可以使用函数过滤。 + +语法: + +``` +$().not(selector或fn) +``` + + + +#### 选择器过滤: filter() + +选择器过滤,指的是使用选择器来选取符合条件的元素。 + +语法: + +```js +$().filter(selector or fn) +``` + + + +#### has():过滤子代元素 + +在jQuery中,表达式过滤除了可以使用filter()访问外,我们还可以使用has()方法。has()方法虽然没有filter()方法那么强大,**但是它的运行速度比较快**。 + +语法: + +``` +$().has(selector) +``` + +说明: + +参数selector是一个选择器。 has()方法与filter()方法功能相似,不过has()方法只有选择器过滤,没有函数过滤。因此我们可以把has() 方法看成是filter()方法的精简版。 + + + +### 查找祖先元素 + +```js + + + + + + + + + + + +
+

子元素

+

子元素

+
+

孙元素

+

孙元素

+
+

子元素

+

子元素

+
+ + + +``` + + + +#### parent():找直接父级 + +#### parents():找所有父级() + +#### parentsUntil(''):找 + +parentsUntil()方法是parents()方法的一个补充,它可以查找“指定范围”的所有祖先元 素,相当于在parents()方法返回的集合中截取一部分。 + +语法: + +``` +$().parentsUntil(selecotr) +``` + +说明: + +selector是一个可选参数,它是一个选择器,用来选择符合条件的祖先元素。 + +### 查找后代元素 + +#### children() + +在jQuery中,我们可以使用children()方法来查找当前元素的“子元素”。注意,children()方法**只能查找****子元素,不能查找其他后代元素**。 + +语法: + +``` +$().children(selector) +``` + +说明: + +selector是一个可选参数,它是一个选择器,用来查找符合条件的子元素。当参数省略,表示选择所有子元素;当参数不省略时,表示选择符合条件的子元素。 + +#### find() + +在jQuery中,我们可以使用find()方法来查找当前元素的“后代元素”。注意,**find()方法不仅能查找子元素,还能查找其他后代元素。** + +语法: + +``` +$().find(selector) +``` + +说明: + +selector是一个可选参数,它是一个选择器,用来查找符合条件的后代元素。**当参数省略,表示选择所有后代元素**;当参数不省略时,表示选择符合条件的后代元素。 + + + +### 向前查找兄弟元素 + +``` + + + + + + + + + + + + + + + +``` + + + +#### prev() + +在jQuery中,我们可以使用prev()方法来查找某个元素的前一个“相邻”的兄弟元素。 + +语法: + +``` +$().prev() +``` + +#### **prevAll()** + +在jQuery中,我们可以使用prevAll()方法来查找某个元素前面“所有”兄弟元素。注意,prev()只会查找前面相邻的兄弟元素,而prevAll()则会查找前面所有的兄弟元素。 + +语法: + +``` +$().prevAll(selector) +``` + +说明:selector是一个可选参数,它是一个选择器,用来查找符合条件的兄弟元素。当参数省略,表示选择前 + +面所有兄弟元素;当参数不省略时,表示选择前面满足条件的兄弟元素。 + +#### prevUntil() + +### 向后查找兄弟元素 + +#### next() + +#### nextAll() + +#### nextUntil() + + + +#### $().siblings('p') :查找所有兄弟元素 + + + + + + + + + + + + + + + + + +#### 4.8 index() + +在jQuery中,我们可以使用index()方法来获取当前jQuery对象集合中“指定元素”的索引值。 + +``` +$(selector).index() +``` + +说明: + +index()方法可以接受一个“jQuery对象”或“DOM对象”作为参数,不过一般情况下,我们很少会使用到参 + +数。当index()不带参数时,一般指的是当前元素相对于父元素的索引值。 + + + + + +练习: + +1.分别使用filter实现带有class属性的文本(jQuery)变红 + +```js + + + + + + + + + + + + + + + +``` + diff --git "a/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/23 Ajax.md" "b/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/23 Ajax.md" new file mode 100644 index 0000000000000000000000000000000000000000..321f7cedb5fd95f739fd8d9021f991b8173b8b0b --- /dev/null +++ "b/15\351\231\210\347\253\213\346\231\272/\347\254\224\350\256\260/23 Ajax.md" @@ -0,0 +1,79 @@ +## jQuery Ajax + +**Ajax 是一种异步、无刷新(或者说局部页面刷新)技术。** + +#### $.get() + +语法:$.get(url, data, fn, type) + +| 参数 | 说明 | +| :--: | :--------------------------------- | +| url | 必选参数,表示被加载的页面地址 | +| data | 可选参数,表示发送到服务器的数据 | +| fn | 可选参数,表示请求成功后的回调函数 | +| type | 可选参数,表示服务器返回的内容格式 | + +参数type返回的内容格式包括:text、html、xml、json、script或default。 + + + +#### $.post() + +语法:$.post(url,data,fn,type) + +#### $.getJSON() + +语法:$.getJSON(url ,data, function(data){……}) + +```json + [ + { + "name": "刘备", + "sex": "男", + "age": 24 + }, + { + "name": "关羽", + "sex": "男", + "age": 24 + }, + { + "name": "小乔", + "sex": "女", + "age": 23 + } + ] +``` + + + +#### $.getScript() + +语法:$.getScript(url, fn) + +| 参数 | 说明 | +| ---- | ---------------------------------------- | +| url | 必选参数,表示被加载的JavaScript文件路径 | +| fn | 可选参数,表示请求成功后的回调函数 | + +#### $.ajax() + +上述方法都是ajax的简化版,它们能实现的功 能,.ajax()都能实现,因为$.ajax()是最底层的方法。 + +语法:$.ajax(options) + +| **参数** | **说明** | +| ----------- | ------------------------------------------------------- | +| **url** | **被加载的页面地址** | +| **type** | **数据请求方式,“get"或"post”,默认为"get"** | +| **data** | 发送到服务器的数据,可以是字符串或对象 | +| dataType | 服务器返回数据的类型,如:text、html、script、json、xml | +| beforeSend | 发送请求前可以修改XMLHttpRequest对象的函数 | +| complete | 请求“完成”后的回调函数 | +| **success** | 请求“成功”后的回调函数 | +| **error** | 请求“失败”后的回调函数 | +| timeout | 请求超时的时间,单位为“毫秒” | +| global | 是否响应全局事件,默认为true(即响应) | +| async | 是否为异步请求,默认为true(即异步) | +| cache | 是否进行页面缓存,true表示缓存,false表示不缓存 | +