操作标签方法

1.HTML()方法

HTML()方法相当于原生JS中的innerHTML属性,用来获取/设置标签内部内容

如果传递参数,批量更改元素内部的内容

方法可以传递一个参数,自定义的字符串内容;不传递参数,获取元素内容

获取:文本和内部标签

语法:jQuery对象.html()

设置:若设置标签时,标签会被渲染

语法: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方法和属性

// 获取所有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对象可以进行二次选择,缩小范围,通过给参数传递字符串格式的选择器

链式调用

jQuery对象调用任何方法(除了节点关系方法)执行完后,方法都会有一个返回值,返回值就是jQuery对象自己,这个现象给我们

提供了便利,可以对执行结果继续打点调用JQ的方法和属性

可以使用jQuery对象进行连续打点调用


其他节点关系方法

find()后代元素

jQuery对象可以利用find()方法,传递一个参数,参数部分规定的选择器,查找范围是jQuery对象的所有后代

参数是字符串格式的选择器

兄弟元素

紧邻的兄弟元素方法

next()下一个兄弟

prev()前一个兄弟

多选方法

nextAll()后面所有的兄弟

prevAll()前面所有兄弟

通过传递参数可以进行二次选择,参数是字符串格式的选择器,在前面/后面兄弟中选中符合选择器规定的部分

parents()祖先级

通过该方法得到的是指定对象的包含body在内的所有祖先级元素组成的jQuery对象

通过传参进行二次选择,参数位置是字符串格式的选择器

jQ 排序和动画

1.eq()方法,大排序

jQuery中获得的对象,内部包含选择一组原生JS对象,在jQuery对象中会进行一个大排序,这个排序与原来的HTML结构没有关系

eq()方法在jQuery对象中通过下标获取某个对象,下标是jQuery对象中的大的排序的下标

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对象大排队中的下标位置

------------------------------------隔行变色案例-----------------------------------------

// 方法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:

$(document).ready(function(){
   //获取元素
})

jQuery中切换效果的方法

显示隐藏方法

1.hide():元素隐藏,隐藏的前提必须是元素display:block

2.show():元素显示,显示的前提必须是元素display:none

3.toggle():在元素隐藏和显示之间进行切换

这三个方法可以设置元素的显示和隐藏效果,在过程中还可以出现过渡动画

参数

如果不传参数:直接显示和隐藏,没有过渡动画

如果传递参数:

单词格式:show、normal、fast

数字格式的时间,单位是毫秒,在规定时间之内会出现显示/隐藏的动画

过渡时间内,伴随着宽度和高度以及透明度的变化

滑动显示隐藏

1.slideDown():滑动显示(方向不一定)

2.slideUp():滑动隐藏

3.slideToggle():滑动切换

让元素在display属性的block和none之间进行切换

参数

如果不传参数:默认的过渡时间是400毫秒

如果传递参数:

单词格式:show、normal、fast

数字格式的时间,单位是毫秒,在规定时间之内会出现显示/隐藏的动画

注意:

1.如果滑动的元素没有设置宽高,没有滑动效果

2.如果元素设置了高度和宽度,会进行上下垂直方向的滑动

3.动画的效果:高度属性在0到设置值之间的变化,没有透明度动画

4.如果元素设置了定位,偏移量方向如果是bottom参与了,滑动方向会发生变化

谈入谈出

1.fadeln():谈入,透明度逐渐增大最终显示

2.fadeOut():谈出,透明度逐渐降低最终隐藏

3.fadeToggle():切换效果

4.fadeTo():谈入/谈出到某个指定的透明度

动画效果,执行的是透明度动画。也是在display属性的block和none之间切换

参数

如果不传参数:默认的过渡时间是400毫秒

如果传递参数:

单词格式:show、normal、fast

数字格式的时间,单位是毫秒,在规定时间之内会出现显示/隐藏的动画


jQuery动画方法

animate()动画方法

作用:执行CSS属性集的自定义动画

语法:$(selector).animate(style,speed,easing,callback)

参数1:css的属性名和运动结束位置的属性值的集合

参数2:可选,规定动画的速度,默认是“noemal”。其他值 slow、normal、fast,数字格式,单位为毫秒

参数3:可选,规定在不同的动画点中设置动画速度的easing函数,值包含swing和linear

参数4:可选,animate函数执行完之后,要执行的函数

动画排队

1.同一个元素对象身上,如果定义了多个动画,动画会排队等待执行

2.如果是不同元素对象都有动画,不会出现排队机制

3.如果有其他非运动的代码,不会等待运动完成

4.之前学习的自带动画的显示隐藏方法,如果设置给同一个元素,也有动画排队

同一个元素身上的运动,可以简化成链式调用的方法

动画延迟

delay:延迟

将delay()设置在某个运动方法之前,表示后面的运动要在规定的时间之后再执行,有延迟运动效果

参数:时间的数值,表示延迟的时间

除了animate方法之外,其他的运动方法也有延迟效果

stop()方法 停止动画

stop()作用:设置元素对象身上的排队的动画以何种方式进行停止

有两个参数,都是布尔值

参数1:设置是否清空后面的动画排队,如果是true表示清空,如果是false表示不清空只停止当前的一个动画

参数2:设置当前是否立即完成,如果是true表示立即完成,对象会立刻走到结束位置,如果是false表示不完成当前动画,立即停止在当前位置

默认情况下,两个参数值默认值为fasle

实际工作中,一般要求会清空后面的动画 并且当前动画要停止在当前的位置
更多时候使用 stop(true)

$("#btn2").click(function(){
        $box1.stop(true,false)
    })

-------------------------------------------------------------------------------------
// 清空后面的动画,走到结尾
    $("#btn1").click(function(){
        $box1.stop(true,true)
    })
    // 清空后面的动画,立即停止在当前
    $("#btn2").click(function(){
        $box1.stop(true,false)
    })
    //不清空后面的动画,跳到结尾
    $("#btn3").click(function(){
        $box1.stop(false,true)
    })
    // 不清空动画,立即停在当前位置 执行下一次动画
    $("#btn4").click(function(){
        $box1.stop(false,false)
    })

动画排队问题

如果将开启运动的程序放在一个事件函数中,事件多次被触发,会执行多次函数,就会在一个元素身上添加了多个动画 会进行动画排队

需要去清除排队的动画,进行放骚扰操作

清空动画排队

清除方法1

利用stop()方法

在每一个运动函数之前都增加一个stop(true),表示在运动执行之前,会将前面排队的动画清空,然后停止在当前位置

清除方法2

利用函数节流方法,如果元素在运动,直接return,不要执行后面的运动代码

每个jQuery对象,都能调用一个is()方法,作用是显示元素对象的某种状态

如果参数位置是is(“:animated”),返回值是布尔值,true表示正在运动,false表示没有运动


jQuery节点操作

创建元素

语法:$(‘<li></li>’)

追加元素1

1.向父元素最后追加

语法:父元素jQuery对象.append(新创建的jQuery对象)

语法:新创建jQuery对象.appendTo(‘父元素选择器’/父元素jQuery对象)

2.向父元素最前面追加

语法:父元素jQuery对象.prepend(新创建的jQuery对象)

语法:新创建jQuery对象.prependTo(‘父元素选择器’/父元素jQuery对象)

追加元素2

1.向元素后面追加新的兄弟

语法:jQuery对象.after(新创建的jQuery对象)

语法:新创建jQuery对象.insertAfter(‘选择器’/jQuery对象)

2.向元素前面追加新的兄弟

语法:jQuery对象.before(新创建的jQuery对象)

语法:新创建jQuery对象.insertBefore(‘选择器’/jQuery对象)

删除元素

语法:jQuery对象.remove()

删除谁就让谁调用方法

清空元素

清空方式1:jQuery对象.empty() 推荐使用,清空内部的所有元素及元素相关的事件

清空方式2:jQuery对象.html(‘’) 仅仅清空内部的元素,不清理内存中的元素的事件


元素尺寸

操作元素尺寸方法

1.width()、height()方法

操作的大小仅仅是内容部分

设置:

语法:jQuery对象.width(数字)

获取:

语法:jQuery对象.width()

2.innerWidth()、innerHeight()方法

操作的大小是内容部分 + padding

设置:

语法:jQuery对象.innerWidth(数字)

获取:

语法:jQuery对象.innerWidth()

3.outerWidth()、outerHeight()方法

操作的大小是内容部分 + padding + border

设置:

语法:jQuery对象.outerWidth(数字)

获取:

语法:jQuery对象.outerWidth()


操作元素的位置

获取元素距离文档的位置

语法:jQuery对象.offset()

返回一个对象,对象中包含了元素的位置

注意:offset()方法获取的元素的位置,永远参照文档和定位没有关系

距离上级定位参考元素的位置

语法:jQuery对象.position()

返回一个对象,对象中包含了元素的位置

注意:position()方法获取的元素的位置,参照最近的定位元素(和定位有关系)

操作卷去的页面间距

获取

语法:jQuery对象.scrollTop()

返回数字

设置

语法:jQuery对象.scrollTop(数字)


jQuery 事件操作

on方法注册事件

注册简单事件语法:jQuery对象.on(‘事件名’,事件处理程序)

事件委托的实现:jQuery对象.on(‘事件名’,‘选择器’,事件处理程序)

选择器:子孙元素

注意:在事件处理程序中,this代表的是子孙元素(所点最先触发的)

off方法移除事件

解绑简单的事件:jQuery对象.off(‘click’,事件处理程序名称)

解绑事件委托注册的事件:jQuery对象.off(‘click’,‘选择器’,事件处理程序名称)

触发事件

语法:jQuery对象.trigger(‘事件名’)

触发事件

语法:jQuery对象.trigger(‘事件名’)

事件对象

鼠标事件对象相关的属性

事件对象.clientX/Y 参照浏览器

事件对象.pageX/Y 参照文档

事件对象.offsetX/Y 参照元素

键盘事件对象相关的属性

事件对象.kegCode 返回键码数字

事件对象.altKey/shiftKey/ctrlKey 返回是布尔值。检测是否按下(ture)

公共的属性/方法

属性:

事件对象.target 最初触发事件的DOM元素

事件对象.currentTarget 在事件冒泡阶段中的当前DOM元素

方法:

事件对象.preventDefault() 阻止默认行为

事件对象.stopPropagation() 阻止事件冒泡

多库共存问题

解决方法1:jQuery中不使用$,使用jQuery

解决方法2:jQuery库释放$符号的使用权,用其他简单的符号代替

jQuery.noConflict() 释放$,把$代表的函数返回给用户,用户可以用其他变量接收