JavaScript框架-jQuery学习笔记

学习视频链接:B站 动力节点 黑马程序员

jQuery是JS库,存放JS代码,封装了JavaScript相关方法调用,简化JavaScript对HTML DOM操作。

JavaScript库,即library,是一个封装好的特定的集合(方法和函数)。从封装一大堆函数的角度理解库,就是在这个库中,封装了很多预先定义好的函数在里面,比如动画animate、hide、show,例如获取元素。

jQuery官网:https://jquery.com/

jQuery各版本下载:https://code.jquery.com/

jQuery的入口函数

jQuery是一个快速、简洁的Javascript库,其设计宗旨时”write less,do more“,即写更少的代码,做更多的事。

<!--引入jQuery库文件-->
<script type="text/javascript" src="jquery.js文件路径"></script>

<script type="text/javascript">
    //1、第一种写法
    $(document).ready(function(){
        ...//当页面DOM加载完毕后再去执行js文件
    })
    //2、第二种写法
    $(function() {
        ...//当页面DOM加载完毕后再去执行js文件
    })
</script> 
$是jQuery的别称,在代码中可以使用jQuery代替$。$(function(){});也可以写成jQeury(function(){});

$同时也是jQuery的顶级对象,相当于原生JavaScript中的window。把元素利用$包装成jQuery对象,就可以调用jQuery的方法。

$(document)作用:把document对象变成jQuery函数库可以使用的对象。
ready是jQuery中的函数,当页面的DOM对象加载成功后会执行ready函数的内容。ready相当于JS中的onload事件。
function()自定义的函数,表示onload后要执行的功能。
  • 当DOM结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完成
  • 相当于原生js中的DOMContentLoaded
  • 不同于原生js中的load事件(原生js中load加载是等页面文档、外部的js文件、css文件、图片加载完毕才执行内部代码)

DOM对象与jQuery对象

1、DOM对象

dom对象,使用JavaScript的语法创建的对象叫做dom对象,也就是js对象。

1、通过getElementById()查询出来的标签对象是dom对象。
2、通过getElementByName()查询出来的标签对象是dom对象。
......

dom对象不能使用jquery对象的属性和方法。

dom对象alert出来的效果是:[object html标签名 Element]

2、jQuery对象

jquery对象,使用jquery语法表示对象叫做jquery对象,jquery表示的对象都是数组。

1、通过jQuery提供的API创建的对象,是jQuery对象。
2、通过jQuery包装的dom对象,是jQuery对象。
3、通过jQuery提供的API查询到的对象,是jQuery对象。

var obj = $("test"); 
obj是使用jquery语法表示的对象(jquery对象)。obj是一个数组,现在数组中就一个值。

jquery对象不能使用dom对象。

jquery对象alert出来的效果:[object Object]

jquery对象本质是dom对象的数组+jquery提供的一系列功能函数(利用$对DOM对象包装后产生的对象【伪数组形式存储】)。

3、dom对象与jquery对象互转

DOM对象与jQuery对象之间是可以相互转换的。因为原生JS比jQuery更大,原生的一些属性和方法jQuery没有被封装,如果想要使用这些属性和方法需要把jQuery对象转换成DOM对象才能使用。

一般来说,在js和jQuery中,单引号和双引号在没有产生嵌套的情况下是没有区别的

dom对象转换成jquery对象:
	语法:$(dom对象)
jquery对象转换成dom对象:
	语法:jquery对象[下标]取出相应的dom对象
		$('div')[index]  index是索引号(下标)
		$('div').get(index)

在这里插入图片描述

选择器

一个字符串,用来定位dom对象的。定位了dom对象,就可以通过jquery的函数操作dom。

1、基本选择器

$(“选择器”) 里面选择器直接写CSS选择器即可,但是需加引号

id选择器:
	语法:$("#id")
class选择器:
	语法:$(".class名称")
标签选择器:
	语法:$("标签名")
所有选择器:
	语法:$("*")
组合(并集)选择器:多个选择器之间使用逗号分隔	
	语法:$("id选择器,class选择器,标签选择器")
交集选择器:多个选择器之间没有任何分隔
	语法:$("id选择器class选择器标签选择器")  
<div>div</div>
<p class="myClass">p class="myClass"</p>
<span>span</span>
<p class="notMyClass">p class="notMyClass"</p>

jquery代码:

p.myClass
表示标签名必须是p标签,而且class类型还要是myClass

2、层级选择器

名称用法描述
子代选择器$("ul>li");使用>符号,获取子层级的元素;并不会获取子层级的子元素(也就是不会获取孙子层级的元素)
后代选择器$("ul li");使用空格,代表后台选择器,获取ul下的所有li元素,包括孙子层级的元素
jQuery设置样式,例如:$('div').css('属性','值')

隐式迭代

遍历内部DOM元素(伪数组形式存储)的过程叫做隐式迭代。

简单来说,就是给匹配到的所有元素进行循环遍历,执行相应的方法,而不需要再进行循环,简化了操作。

3、筛选选择器

语法用法描述
:first$(‘li:first’)获取第一个li元素
:last$(“li:last”)获取最后一个li元素
:eq(index)$(“li:eq(2)”)获取到的li元素中,选择索引号为的元素怒,索引号index从0开始
:odd$(“li:odd”)获取到的li元素中,选择索引号为奇数的元素
:even$(“li:even”)获取到的li元素中,选择索引号为偶数的元素

筛选方法

语法用法说明
parent()$(“li”).parent();查找父级
children(selector)$(“ul”).children(“li”)相当于$(“ul>li”),最近一级
find(selectot)$(“ul”).find(“li”)相当于$(“ul li”),后代选择器
siblings(selector)$(“.first”).siblings(“li”)查找兄弟节点,不包括自己本身
nextAll([expr])$(“.first”).nextAll()查找当前元素之后所有的同辈元素
prevAll([expr])$(“.last”).prevAll()查找当前元素之前所有的同辈元素
hasClass(class)$(‘div’).hasClass(“protected”)检查当前的元素是否含有某个特定的类,如果有,则返回true
eq(index)$(“li”).eq(2);相当于$(“li:eq(2)”),index从0开始

4、表单选择器

​ 表单相关元素选择器是指文本框、单选框、复选框、下拉列表等元素的选择方式。该方法无论是否存在表单<form>,均可做出相应选择。表单选择器是为了能更加容易地操作表单,表单选择器是根据元素类型来定义的。

$(":type属性值")
	使用<input>标签的type属性值,定位dom对象的方式。
	例如:
	$(":text")选取所有的单行文本框
	$(":password")选取所有的密码框
	$(":radio")选取所有的单选框
	$(":checkbox")选取所有的多选框

排它思想

想要多选一的效果,排它思想:当前元素设置样式,其余的兄弟元素清除样式。

链式编程

链式编程是为了节省代码量,看起来更优雅。

jQuery样式操作

1、操作CSS方法

jQuery可以使用css方法来修改简单元素样式,也可以操作类,修改多个样式。

  • 参数只写属性名,则是返回属性值

  • 参数是"属性名","属性值",逗号分隔,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号

  • 参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开,属性可以不用加引号

    $("div").css({
        width: 100,
        height: 100,
        backgroundColor: "red"
        //如果是复合属性必须采用驼峰命名法,如果值不是数字,则需要加引号
    })
    

2、设置类样式方法

作用等同于以前的classList,可以操作类样式,注意操作类里面的参数不要加点。

/*
	<div class="current"><div>
*/
$(function() {
    //添加类 addClass
    $("div").click(function() {
        $(this).addClass("current");
    });
    
    //删除类 removeClass
    $("div").click(function() {
        $(this).removeClass("current");
    });
    
    //切换类 toggleClass
    $("div").click(function() {
        $(this).toggleClass("current");
    })
})

3、类操作与className区别

原生js中className会覆盖元素原先里面的类名。

jQuery类操作只是对指定类进行操作,不影响原来的类名。

jQuery效果

1、显示隐藏效果

//显示
show([speed,[easing],[fn]])
//隐藏
hide([speed,[easing],[fn]])
//显示隐藏切换
toggle([speed],[easing],[fn])
  • 参数都可以省略,无动画直接显示
  • speed:三种预定速度之一的字符串(“slow”,“normal”,”fast“)或表示动画时长的毫秒数值(如:1000)
  • easing:(Optional)用来指定切换效果,默认是”swing“,可用参数”linear“
  • fn:回调函数,在动画完成时执行的函数,每个元素执行一次

2、滑动效果

//下滑效果
slideDown([speed],[easing],[fn])
//上滑效果
slideUp([speed],[easing],[fn])
//滑动切换效果
slideToggle([speed],[eading],[fn])
  • 参数都可以省略
  • speed:三种预定速度之一的字符串(“slow”,“normal”,”fast“)或表示动画时长的毫秒数值(如:1000)
  • easing:(Optional)用来指定切换效果,默认是”swing“,可用参数”linear“
  • fn:回调函数,在动画完成时执行的函数,每个元素执行一次

3、事件切换

hover([over],[out])

hover(function(){},function(){})
  • over:鼠标移到元素上触发的函数(相当于mouseenter)
  • out:鼠标移出元素要出发的函数(相当于mouseleave)
  • 若只有一个函数,那么鼠标经过和鼠标离开都会触发当前这个函数

4、动画或效果队列

动画或效果队列

动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。

停止排队

stop()
  • stop()方法用于停止动画或效果
  • stop()写到动画或者效果的前面,相当于停止结束上一次的动画

5、淡入淡出效果

//淡入效果
fadeIn([speed],[easing],[fn])
//淡出效果
fadeOut([speed],[easing],[fn])
//淡入淡出切换效果
fadeToggle([speed],[easing],[fn])
  • 参数都可以省略
  • speed:三种预定速度之一的字符串(“slow”,“normal”,”fast“)或表示动画时长的毫秒数值(如:1000)
  • easing:(Optional)用来指定切换效果,默认是”swing“,可用参数”linear“
  • fn:回调函数,在动画完成时执行的函数,每个元素执行一次

渐进方式调整到指定的不透明度

fadeTo([[speed],opacity,[easing],[fn]])
  • opacity透明度必须写,取值范围再[0,1]之间
  • speed:三种预定速度之一的字符串(“slow”,“normal”,”fast“)或表示动画时长的毫秒数值(如:1000),必须填写
  • easing:(Optional)用来指定切换效果,默认是”swing“,可用参数”linear“
  • fn:回调函数,在动画完成时执行的函数,每个元素执行一次

6、自定义动画

animate(params,[speed],[easing],[fn])
  • params:想要更改的样式属性,以对象形式传递,必须写。属性名可以不用带引号,如果时复合属性则必须采用驼峰命名法。其余参数都可以省略
  • speed:三种预定速度之一的字符串(“slow”,“normal”,”fast“)或表示动画时长的毫秒数值(如:1000)
  • easing:(Optional)用来指定切换效果,默认是”swing“,可用参数”linear“
  • fn:回调函数,在动画完成时执行的函数,每个元素执行一次

jQuery属性操作

1、设置或获取元素固有属性值

所谓元素固有属性就是元素本身自带的属性,比如<a>元素里面的href,<input>元素里面的type。

获取属性

prop("属性")

设置属性

prop("属性","属性值")

2、设置或获取元素自定义属性值

用户自己给元素添加的属性,称为自定义属性。

获取属性

attr("属性")  //类似原生getAttribute()

设置属性

attr("属性","属性值")  //类似原生setAttribute()

也可以获H5自定义的属性。

3、数据缓存

data()方法可以在指定的元素上存取元素,并不会修改DOM元素结构。一旦页面刷新,之前存放的数据都将被移除。

附加数据语法

data("name","value") //向被选元素添加数据

获取数据语法

data("name") //向被选元素获取数据

同时,还可以读取HTML5自定义属性data-index,得到的是数字型。

jQuery内容文本值

主要针对元素的内容,还有表单的值操作。

普通元素内容 html()

相当于原生inner HTML

html()     //获取元素的内容
html("内容")    //设置元素的内容

普通元素文本内容 text()

相当于原生inner Text

text()   //获取元素文本内容
text("文本内容")  //设置元素的文本内容

表单的值 val()

相当于原生value

val()    //获取表单元素的值
val("值")   //设置表单元素的值

jQuery元素操作

主要是遍历、创建、添加、删除元素操作等。

1、遍历元素

jQuery隐式迭代是对同一类元素做了同样的操作。如果想要给同一类元素做不同的操作,就需要用遍历。

语法1

$("单个选择器").each(function(index,domEle) {xxx;})
  • each()方法遍历匹配的每一个元素。主要用DOM处理。
  • 里面的回调函数有2个参数:index是每个元素的索引号;domEle是每个DOM元素对象,不是jQuery对象
  • 想使用jquery方法,需要给这个dom元素转换为jquery对象$(domEle)

语法2

$.each(object,function(index,element) {xxx;})
  • $.each()方法可用于遍历任何对象。主要用于数据处理,比如数组,对象
  • 里面的函数有2个参数:index是每个元素的索引号;element遍历内容

2、创建元素

语法

$("<标签名></标签名>")

例如$("<li></li>")动态地创建了一个<li>

3、添加元素

内部添加

element.append("内容")  //内部添加并且放到内容的最后面

element.prepend("内容")  //内部添加i把那个且放到内容的最前面

外部添加

element.after("内容")  //把内容放入目标元素后面

element.before("内容")  //把内容放入目标元素前面
  • 内部添加元素生成之后,它们是父子关系
  • 外部添加元素生成之后,它们是兄弟关系

4、删除元素

element.remove()  //删除匹配的元素(本身)

element.empty()   //删除匹配的元素集合中的所有的子节点

element.html("")  //清空匹配的元素内容

jQuery尺寸方法

1、jQuery尺寸

语法用法
width()/height()取得匹配元素宽度和高度值,只算width/height
innerWidth()/innerHeight()取得匹配元素宽度和高度值,包含padding
outerWidth/outHeight()取得匹配元素宽度和高度值,包含padding、border
outerWidht(true)/outerHeight(true)取得匹配元素宽度和高度值,包含padding、border、margin

2、jQuery位置

位置主要有三个:offset()、position()、scrollTop()/scrollLeft()

offset() 设置或获取元素偏移

  • offset() 方法设置或返回被选元素相对于文档的偏移坐标,跟父级没有关系
  • 该方法有2个属性left、top。offset().top用于获取距离文档顶部的距离,offset().left用于获取距离文档左侧的距离

position() 获取元素偏移

  • position()方法用于返回被选元素相对于带有定位的父级偏移坐标,如果父级都没有定位,则以文档为准
  • position方法只能获取,不能设置偏移

scrollTop()/scrollLeft()设置或获取元素被卷去的头部和左侧

  • scrollTop()方法设置或返回被选元素被卷去的头部
  • scrollLeft()方法设置或返回被选元素被卷去的左侧

过滤器

过滤器就是过滤条件,对已经定位到数组中DOM对象进行过滤筛选,过滤条件不能独立出现在jquery函数,如果使用只能出现在选择器的后方。过滤器不能单独使用,需与选择器一起使用

<!--dom1-->
<div>1</div>
<!--dom2-->
<div>2</div>
<!--dom3-->
<div>3</div>
$("div")==[dom1,dom2,dom3]

1、基本过滤器

1.选择第一个first,保留数组中第一个DOM对象
	语法:$("选择器:first")
2.选择最后个last,保留数组中最后DOM对象
	语法:$("选择器:last")
3.选择数组中指定对象
	语法:$("选择器:eq(数组索引)")
4.选择数组中小于指定索引的所有的DOM对象
	语法:$("选择器:lt(数组索引)")
5.选择数组中大于指定索引的所有DOM对象
	语法:$("选择器:gt(数组索引)")

2、表单属性和过滤器

根据表单中的dom对象的状态情况,定位dom对象。

启用状态:enabled
不可用状态:disabled
选择状态:checked
1、选择可用的文本框
	$(":text:enabled")
2、选择不可用的文本框
	$(":text:disabled")
3、复选框选中的元素
	$(":checkbox:checked")
4、获取下拉列表中的被选中的元素
	选择器>option:selected

函数

1、val
	操作数组中DOM对象的value属性。
	$(选择器).val():无参数调用形式,读取数组中第一个DOM对象的value属性值。
	$(选择器).val(值):有参形式调用,对数组中所有DOM对象的value属性值进行统一赋值。
2、text
	操作数组中所有DOM对象的【文字显示内容属性】
	$(选择器).text():无参数调用,读取数组中所有DOM对象的文字显示内容,将得到的内容拼接为一个字符串返回。
	$(选择器).text(值):有参数方式,对数组中所有DOM对象的文字显示内容进行统一赋值。
3、attr
	对val,text之外的其它属性操作
	$(选择器).attr("属性名"):获取DOM数组第一个对象的属性值。
	$(选择器).attr("属性名","值"):对数组中所有DOM对象的属性设为新值。
4、remove
	$(选择器).remove:将数组中所有DOM对象及其对象一并删除。
5、empty
	$(选择器).empty():将数组中所有DOM对象的子对象删除。
6、append
	为数组中所有DOM对象添加子对象
	$(选择器).append("需添加的dom对象内容")
7、html
	设置或返回被选元素的内容(innerHTML)。
	$(选择器).html():无参数调用方法,获取DOM数组第一个元素的内容。
	$(选择器).heml(值):有参数调用,用于设置DOM数组中所有元素的内容。
8、each
	each是对数组,json和dom数组等的遍历,对每个元素调用一次函数。
	语法一:$each(要遍历的对象,function(index,element){处理程序})
	语法二:jQuery对象.each(function(index,element){处理程序})
	index:数组的下标
	element:数组的对象

事件

为页面元素绑定事件,即对于指定页面元素,当某个事件发生后,执行指定动作。

1、事件注册

单个事件注册

//语法:
element.事件(function() {})

$("div").click(function() {事件处理程序}),其它事件和原生基本一致。比如mouseover(mouseenter)、mouseout、blur、focus、change、keydown、keyup、resize、scroll等。

语法:$(选择器).监听事件名称(处理函数)

说明:监听事件名称是js事件中事件句柄去掉on后的内容,js中的onclick的监听事件名称是click。

2、on()绑定事件

on()方法在被选元素上添加事件处理程序。【推荐使用该方法】

语法:$(选择器).on(event,function)

event:事件一个或多个,多个之间空格分开

function:可选。规定当事件发生时运行的函数。

$("div").on({
    mouseenter: function() {
        $(this.css("background","red));
    },
    click: function() {
        $(this).css("background","blue");
    }
})

$("div").on("mouseenter mouseleave",function() {
    $(this).toggleClass("className");
})

on()方法可以事件委派操作。事件委派的定义就是,把原来加给子元素身上的事件绑定在父元素身上,就是把事件委派给父元素。

element.on(events,selector,fn)
  • events:一个或多个用空格分隔的事件类型
  • selector:元素的子元素选择器
  • fn:回调函数
$("ul").on("click","li",function() {
    alert("事件委派");
})
//click是绑定在ul身上,但是触发的对象是ul里面的li

动态创建的元素,click()没有办法绑定事件,on()可以给动态生成的元素绑定事件。

3、off()解绑事件

off()方法可以移除通过on()方法添加的事件处理程序。

element.off();     //解绑element元素身上的所有事件
element.off("xx事件");  //解绑element元素的xx事件
element.off("xx事件","子选择器");    //解绑事件委托

如果有的事件只想触发一次,可以使用one()来绑定事件。

4、trigger()自动触发事件

有些事件希望自动触发,比如轮播图自动播放功能同点击右侧按钮一致。可以利用定时器自动触发右侧按钮点击事件,不必鼠标点击触发。

element.事件();  //第一种简写形式
element.trigger("事件");   //第二种自动触发模式
element.triggerHandler(事件);  //第三种自动触发模式,不会触发元素的默认行为

5、事件对象

事件被触发,就会有事件对象的产生。

element.on(events,[selector],function(event) {})
  • 阻止默认行为:event.perventDefault()或者return false
  • 阻止冒泡:event.stopPropagation()

其它方法

1、对象拷贝

如果想要把某个对象拷贝(合并)给另一个对象使用,此时可以使用$.extend()方法。

$.extend([deep],target,object1,[objectN])
  • deep:如果设为true为深拷贝,默认为false浅拷贝
  • target:要拷贝的目标对象
  • object1:待拷贝到第一个对象的对象
  • objectN:待拷贝到第N个对象的对象
  • 浅拷贝是把被拷贝的对象复杂数据类型中的地址拷贝给目标对象,修改目标对象会影响被拷贝的对象
  • 深拷贝,完全克隆(拷贝的是对象,而不是地址),如果拷贝时存在不冲突的属性,会合并到一起,修改目标对象不会影响被拷贝对象。

2、多库共存

jQuery使用 作为标识符,随着 j Q u e r y 的流行,其它 j s 库也会用这个 作为标识符,随着jQuery的流行,其它js库也会用这个 作为标识符,随着jQuery的流行,其它js库也会用这个作为标识符,这样一起使用就会引起冲突。这就需要一个解决方案,让jQuery和其它的js库不存在冲突,可以同时存在,这就叫多库共存。

解决方案

  • 把关于jQuery的$符号同意改为jQuery
  • jQuery变量规定新的名称:$.noConflict(),例如:var xx = $.noConflict();

3、jQuery插件

jQuery功能比较有限,想要更复杂的特效效果,可以借助于jQuery插件完成。

注:这些插件也是依赖于jQuery来完成的,所以必须要先引入jQuery文件,因此也称为jQuery插件。

jQuery插件常用的网站

  • jQuery插件库:http://www.jq22.com/
  • jQuery之家:http://www.htmleaf.com/

Ajax

Asynchronous JavaScript And XML异步的JavaScript和XML

1、$.ajax()

$.ajax()是jQuery中AJAX请求的核心方法,所有的其他方法都是在内部使用此方法。

语法:$.ajax({name:value,name:value,…})

说明:参数是json的数据,包含请求方式,数据,回调方法等

例如:

$.ajax({async:true,
		contentType:"application/json",
		data:{name:"zhangsan",sex:"男"},
		dataType:"json",
		error:function(){请求出现错误时,执行的函数},
		success:function(resp){//resp,自定义参数名,就是responseText,是jquery处理后的数据。},
		url:"",
		type:"get"
        })
async:布尔值,表示请求是异步处理。默认是true
	$.ajax({async:true})
contentType:发送数据到服务器时所使用的内容类型,可以不写。
	表示请求的参数是json格式的,可以写application/json
data:规定要发送到服务器的数据,可以是字符串、数组。多数是json
dataType:期望从服务器响应的数据类型。jQuery从xml,json,text,html这些中测试最有可能的类型
	"xml"	一个XML文档
	"html"	HTML作为纯文本
	"text"	纯文本字符串
	"json"	以JSON运行响应,并以对象返回
error:一个function,表示请求失败,执行的函数。
	error:function(){发生错误时执行}
success:一个function,当请求成果时运行的函数(请求成功了,从服务器返回了数据,会执行success指定函数
url:规定发送请求的URL
type:规定请求的类型(GET或POST等),默认时GET,get,post不用区分大小写

主要使用的是url、data、dataType、success。

2、$.get()

$.get()方法使用HTTP GET请求从服务器加载数据。

语法:$,get(url,data,function(resp),dataType)

url:必需。规定需要请求的URL。
data:可选。规定连同请求发送到服务器的数据。
function(resp)可选。当请求成功时运行的函数。resp是自定义形参名。
	resp包含来自请求的结果数据

3、$.post()

$.post()方法使用HTTP GET请求从服务器加载数据。

语法:$.post(URL,data.function(resp),dataType)

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值