2020-03-07

了解 jQuery

    + 是一个前端类库(方法库,工具库)

        => jQuery 里面 95% 以上都是方法

    + 有人把 js 里面各种 DOM 操作都给你封装好了

jQuery 的中文网站

    + http://jquery.cuishifeng.cn/

jQuery 的使用

    + 分成下载和使用  下载后,在页面里引入一个 jquery.js或jqery.min.js 即可

    当 jQuery 文件被引入以后

        + 我们的全局就会多了两个变量

        + jQuery 向全局添加了两个名字

            => $

            => jQuery

        + 这两个名字无任何区别

jQuery 的优点

    +无所不能的选择器

    +无处不在的隐式迭代

    +无与伦比的链式编程

    +jQuery 号称全兼容

jQuery 的选择器

    + 选择器就是用来帮我们获取 DOM 元素的方法

    $('div')    通过标签名获取元素

    $('.box')  通过类名获取元素

    $('#box')  通过id名获取元素

    还有 $('ul li'), $('ul>li:nth-child(n)')、等等  n可以为数字、odd、even

    注:不管使用哪一种选择器,获取到的都是一个元素集合,只有id选择器里面可能有一个元素

    特殊选择器

    1. :first  获取第一个

    2. :last  获取最后一个

    3. :eq(n) 获取索引为n的元素

    4. :odd    获取所有索引为 奇数 的

    5. :even  获取索引为 偶数 的

jQuery 的筛选器

            + 用在 jQuery 选择的元素集合的后面

            + 都是方法,为了对已经选择的元素进行二次筛选

    筛选器:

        1. first()  筛选出来一个元素集合里面的第一个

        2. last()  筛选出来一个元素集合里面的最后一个

        3. eq(n)    筛选出来一个元素集合里面索引为 n 的那一个

        4. next()  筛选出元素的下一个兄弟元素

        5. nextAll()筛选出元素后面的所有兄弟元素

        6. nextUntil(选择器)

            -如果后无参数,筛选出元素后面的所有兄弟元素

            -如果有参数,筛选出元素后面所有的兄弟元素直到选择器元素为止,不包含选择器元素


        7. prev()  筛选出元素的上一个兄弟元素

        8. prevAll(选择器)筛选出元素的上面的所有兄弟元素

        9. prevUntil(选择器)

            -如果后无参数,筛选出元素上面的所有兄弟元素

            -如果后有参数,筛选出元素上面所有的兄弟元素直到选择器元素为止,不包含选择器元素

        10. parent() 拿到元素的父元素

        11. parents()拿到所有祖先元素,直到 html 元素

        12. parentsUntil(选择器)

                -如果后无参数,拿到元素所有祖先元素

                -如果后有参数,筛选出元素所有祖先元素直到选择器元素为止,不包含选择器元素

        13. children(选择器)

                -如果后无参数,筛选出所有子级元素

                -如果后有参数,筛选出所有子元素里面符合条件选择器条件的元素

        14. siblings(选择器)

                -如果后无参数,筛选出所有兄弟元素

                -如果后有参数,筛选出所有兄弟元素里面符合条件选择器条件的元素

        15. find(选择器)

                -在元素集合里面的每一个元素中,查找后代元素

                -在一个元素的后代元素中查找对应的选择器的元素

        16. index()

                -获取到元素的索引位置

                -不是元素集合里面的第几个

                -找到他是该父元素下的第几个元素

                -拿到的是一个数字

jQuery 操作文本内容

    + html()

        -一个读写的方法

        -不传参数的时候,就是获取元素内部的超文本内容

        -获取的时候只能获取元素集合里面的第一个元素的超文本内容

        -传一个参数的时候,就是设置元素集合里所有元素内的超文本内容

    + text()

        -一个读写的方法

        -不传参数的时候,就是获取元素集合内所有内部的文本内容

        -传一个参数的时候,就是设置元素集合里所有元素内的文本内容

    + val()

        -一个读写的方法,操作 Input 标签

        -不传参数的时候就是获取元素集合里面第一个标签的 value 值

        -传一个参数的时候就是设置所有元素集合里面的标签的 value 值

jQuery 操作元素类名

    + addClass() 添加类名

    + removeClass() 移除类名

    + toggleClass() 切换类名(有就删,无就加)

    + hasClass() 判断有没有某一个类名

jQuery 操作元素属性

    + attr()

        -是一个读写的方法

        -attr(要读取得属性名):传递一个参数得时候是读取

        -attr(属性名,属性值):传递两个参数得时候就是设置

        -只获取元素集合内第一个元素的属性

    + removeAttr()

        -专门用来移除属性的,针对元素集合内所有元素

    注:所有属性都会显示在标签上(原生属性和自定义属性),不管属性值是什么类型,都会变为字符串

    + prop() 和 removeProp()    同 attr 的一套方法,使用方式一样

    注:设置的时候,原生属性会显示在标签上,非原生属性,不会显示在标签上,会存储在DOM对象身上。       

        存储的是什么数据类型,获取到就是什么数据类型

        无法删除原生属性,如:(id,class,style)

    + data() 

        - 一个读写的方法

        - 创建的是自定义属性

        -传一个参数是读取,两参数是设置

    + removeData()

        - 删除 data 设置的属性

    注: 和元素的元素属性没有关系,就是在元素身上开辟一个地方,存储一些数据,不会显示在标签上

        存储的是什么类型,拿到的就是什么类型

jQuery 操作元素样式

    + css()

        - 一个读写的属性

        - 不同的操作需要不同的参数

        - css(要获取的样式名)

            => 获取元素样式,行内和非行内都能获取

        - css(样式名,样式值)

            => 设置元素的样式

            => 值得位置如果不带单位,默认为 px

        - css({

            样式名:样式值,

            样式名:样式值,

            ...

            })

            => 批量设置元素的样式

jQuery 绑定事件

    + 给元素绑定一个事件

    + on() 方法是专门用来绑定事件的

        => jQuery 里面通用的事件绑定方式

        => 通过传递不同的参数来达到不同的效果

        on 方法的各种参数描述

            1. on('事件类型',事件处理函数)

                => 给元素集合内所有元素绑定一个事件

            2. on('事件类型','事件委托',事件处理函数)

                => 把 事件委托 位置的元素的事件 委托给了前面的元素集合

            3. on('事件类型','复杂数据类型',事件处理函数)

                => 给每一个元素绑定一个事件,复杂数据类型是触发事件的时候传递的参数,在事件对象里面获取(e)

            4.  on('事件类型','事件委托','任意数据类型',事件处理函数)

                => 做一个事件委托的形式,第三个参数位置的数据,是触发事件的时候,可以传递进去的数据

            5.  on(对象)

                => 给一个函数绑定多个事件的方式

    + one() 方法是专门通过绑定一个只能执行一次的方法

        => 传递的参数个数和意义和 on 方法一模一样

        => 绑定上的事件只能执行一次

    + off() 方法是专门用来解绑一个元素事件的

        => 有两种使用方式

        => off('事件类型')  给该事件类型所有事件处理函数解绑

        => off('事件类型',事件处理函数名)  解绑指定事件处理函数

        => on 和 one 绑定的事件都可以移除

    + trigger() 方法是专门用来触发事件的方法

        => 不通过点击,通过代码就能把事件触发了

        => trigger('事件类型')  把该元素的事件给触发了

    + 常用事件

        => jQuery 把一些常用的事件直接做成了函数,如:click,mouseover,... ,直接使用就可以了

        => 使用click举一个例子

            - click(事件处理函数)

            - click(参数,事件处理函数)  参数:触发事件时传入事件对象里面的数据

    + hover()

        =>  jQuery 里面唯一一个很特殊的事件,表示一个鼠标悬停的动作

        => hover(鼠标移入的时候触发,鼠标移出的时候触发) 如果只写一个函数参数,那么这两次都会触发这个函数 


jQuery 的节点操作

    + 创建节点  对应原生js中createElement()

        + 只有一个方法

        + $() 或 jQuery()

            -() 里面传递一个 html 格式文本的时候就是创建节点(DOM 元素)

            -() 里面传递一个选择器的时候,就是获取页面中的 DOM 元素

    + 插入节点  对应原生js中appendChild()

        + 内部插入(父子关系)

            1. append()

                => 页面元素.append(要插入的元素)

                => 放在页面元素的子元素位置,放在末尾

            2. appendTo()

                => 要插入元素.append(页面元素)

                => 跟上面append()用法相同,只是主语不同

            3. prepend()

                => 页面元素.prepend(要插入的元素)

                => 放在页面元素的子元素位置,放在最前

            4. perpendTo()

                => 要插入元素.prepend(页面元素)

                => 跟上面prepend()用法相同,只是主语不同

        + 外部插入(兄弟关系)

            1. after()

                => 页面元素.after(要插入的元素)

                => 放在页面元素的下一个兄弟元素位置

            2. insertAfter()

                => 要插入元素.insertAfter(页面元素)

                => 跟上面after()用法相同,只是主语不同

            3. before()

                    => 页面元素.before(要插入的元素)

                    => 放在页面元素的上一个兄弟元素位置

            4. insertBefore()

                => 要插入元素.insertBefore(页面元素)

                => 跟上面before()用法相同,只是主语不同

    + 删除节点  对应原生js中removeChild()

        1. empty() 空

            => 页面元素.empty()

            => 把页面元素变成一个空标签

        2. remove() 移除

            => 删除自己

    + 替换节点  对应原生js中replaceChild()

        - 把页面中某一个节点替换成其他节点

            1. replaceWith()

                => 页面元素.replaceWith(替换元素)

                => 用替换元素把页面元素替换掉

            2. replaceAll()

                => 替换元素.replaceAll(页面元素)

                => 和replaceWith()用法一样,只是换了主语

    + 克隆节点  对应原生js中cloneNode()

        - 复制一份一模一样的元素

            1.clone()

                => 专门用来克隆节点的

                => 页面元素.clone()

                => 返回值:就是克隆出来的元素结合,集合里面有一个元素,就是克隆好的节点

                => 会克隆子节点

                => 接收两个参数

                    - clone(布尔值,布尔值)

                    - 第一个参数:默认值是 false,表示是否克隆元素的事件

                    - 第二个参数:默认值是 false,表示是否克隆子节点的事件

                    -注:当第一个参数为false时,第二个参数没有意义

jQuery 获取元素尺寸

    + 尺寸:元素占地面积

    1. width() 和 height()

        => 获取元素的 content 区域的尺寸,不管盒模型如何

    2. innerWidth() 和 innerHeight()

        => 获取元素的 content + padding 区域的尺寸

    3. outerWidth() 和 outerHeight()

        => 获取元素 content + padding + border 区域的尺寸

    4. outerWidth(true) 和 outerHeight(true)

        => 获取元素 content + padding + border + margin 区域的尺寸

jQuery 获取元素位置

    - 获取元素相对于谁的位置关系

    1. offset()  偏移量

        => 是一个读写得属性

        => 读取

            -> 不传递参数就是读取

            -> 读到的元素相对于页面的位置关系

            -> 返回值是一个对象 {left:xxx,top:xxx}

        => 写入

            -> 传递一个对象就是写入 {left:xxx,top:xxx}

            -> 绝对写入(不管原来位置如何,以修改后的为标准)

    2. position()  定位

        => 只读的方法

            -元素相对于定位父级的位置关系

            -得到的也是一个对象 {left:xxx,top:xxx}

jQuery 获取卷去的尺寸

    + scrollTop()

        => 原生 js 里面 document.documentElement.scrollTop

        => 读写的方法

        => 不传递参数的时候就是设置卷去的高度

        => 传递一个参数的时候就是设置卷去的高度

    + scrollLeft()

        => 原生 js 里面 document.documentElement.scrollLeft

        => 读写的方法

        => 不传递参数的时候就是设置卷去的宽度

        => 传递一个参数的时候就是设置卷去的宽度

    注:设置的时候不会滚动回去而是直接跳回到设置的高度(宽度)

jQuery 的方法

    + ready 的方法

        -类似于 window.onload 事件

            -> 会在页面所有资源加载完毕后执行

        -ready()

            -> 会在页面 html 结构加载完毕后执行

        -也叫做jQuery 的入口函数

        -有一个简写函数

            -> $(function(){})

    + each() 方法

        -类似于 forEach() 方法

        -jQuery 的元素集合,是一个 jQuery 数组,不是 数组,不能用数组的各种方法

jQuery 里面的动画 -> (都为元素集合的方法)

    + 让元素出现不同的移动,改变

        => transition 过渡动画

        => animation 帧动画

    + 标准动画

        - 参数全都是选填

        1. show() 显示

            => 语法:show(时间,运动曲线,运动结束的函数)

        2. hide() 隐藏

            => 语法:hide(时间,运动曲线,运动结束的函数)

        2. toggle() 切换(如果是显示就隐藏,如果是隐藏就显示)

            => 语法:toggle(时间,运动曲线,运动结束的函数)

    + 折叠动画

        - 参数全都是选填

        1. slideDown() 下滑显示

            => 语法:slideDown(时间,运动曲线,运动结束的函数)

        2. slideUp() 上滑隐藏

            => 语法:slideUp(时间,运动曲线,运动结束的函数)

        3. slideToggle() 切换滑动显示和隐藏

            => 语法:slideToggle(时间,运动曲线,运动结束的函数)

    + 渐隐渐显动画

        - 前三个语法同上,参数都有默认值

        1. fadeIn()  渐渐的显示

        2. fadeOut()  渐渐的消失

        3. fadeToggle() 渐渐的切换显示和消失

        4. fadeTo()

            => 语法:slideToggle(时间,指定透明度(eg:0.6),运动曲线,运动结束的函数)

    + 综合动画

        1. animate()

            => 基本上大部分的css样式都可以动画

            => transform 不行,颜色不行

            => 语法:animate({},时间,运动曲线,运动结束函数)

                - {}里面就是你要运动的css样式,例如 height,left,borderRadius

    + 停止动画

        -让当前的动画结束

        -因为jQuery的动画你一直点,他就一直触发,如果你点击10次,它就会执行10次,直至10次全部完毕才结束

        1. stop() 运动到哪里,停止到哪里

        2. finish() 运动到哪里,停止到动画完成的位置

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容

  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,380评论 0 44
  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 1,338评论 0 8
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,335评论 0 2
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,171评论 0 1
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,183评论 0 3