JavaScript学习13

JavaScript库

JavaScript库是一个封装好的特定的集合(方法和函数)

简单来说就是一个JS文件,里面封装了js代码

jQuery

jQuery是一个JavaScript库

jQuery封装了JavaScript常用的功能代码,优化了DOM操作、事件处理、动画设计和ajax函数

jQuery基本使用

首先下载jQuery文件,然后引入jQuery文件(<script src="jQuery.js"></script>)

jQuery入口函数

得到页面DOM加载完毕再执行函数

$(document).redy(function(){

})

$(function(){

})

相当于原生DOM中的DOMContentloaded

jQuery的顶级对象$

$是jQuery的别称,代码中可以用jQuery代替

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

jQuery对象和DOM对象

用原生JavaScript获取过来的对象就是DOM对象,jQuery方法获取的对象就是jQuery对象

jQuery对象的本质就是利用$符号对DOM对象进行包装后产生的对象,使用伪数组形式存储

DOM对象只能使用原生JavaScript中的方法,jQuery对象也只能使用jQuery方法

但jQuery对象和DOM对象可以相互转换

DOM对象转换为jQuery对象:$(DOM对象),例如$('div')

jQuery对象转换为DOM对象,例如:$('div')[index] 或$('div').get(index) index为索引号

jQuery选择器

基本选择器

使用$('选择器'),里面直接写CSS选择器就可以了,但要加引号

 隐式迭代

就是把匹配的所有元素内部进行遍历循环,执行相应的方法,不需要我们再次进行循环,从而简化我们的操作

jQuery中执行方法时,进行了隐式迭代

筛选选择器

 jQuery筛选方法

parents()是获取对象的所有父级,以伪数组形式返回, parents(selector)可以获取对象的指定的父级

 jQuery里的排他思想

当前元素设置样式,其余兄弟元素删除样式

可以使用siblings()方法查找除了自己之外的兄弟,并且去除其样式

链式编程

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

可以将对一个jQuery对象执行的操作写在一行里面

$('.item').css('color','red');
$('.item').siblings().css('color','');
//链式编程
$('.item').css('color','red').siblings().css('color','');

jQuery修改css样式

可以使用jQuery对象.css()

//参数只写属性名,则返回属性值
//返回div盒子的文字颜色
$('div').css('color');
//参数是属性名,属性值,则是设置一组样式,属性必须加引号,属性值如果是数字可以不加单位和引号
//div盒子的文字颜色设置为红色
$('div').css('color','red');
//参数可以是对象形式,方便设置多组样式,属性名和属性值用冒号隔开,属性可以不用加引号
$('div').css('color':'red','font-size':20);
//注意,如果是符合属性,例如background-color,必须使用驼峰命名法,例如backgroundColor

也可以通过设置类名修改css样式,注意jQuery中对原来的类名进行操作,不会直接覆盖原来的类名

//添加类名
$('div').addClass('current');
//移除类名
$('div').removeClass('current');
//切换类,如果没有这个类,就加上,如果有,就去掉
$('div').toggleClass('current');

jQuery效果

显示与隐藏效果

显示

jQuery对象.show([speed],[easing],[fn])

 参数可以全部省略,表示无动画直接显示,一般来说不使用参数

speed参数:表示动画的速度,可以为slow、normal、fast,或表示动画时长的毫秒数值,无单位

easing参数:用来指定切换效果,默认是swing,也可以用参数linear

fn参数:回调函数,在动画完成时执行的函数,执行一次

隐藏

jQuery对象.hide([speed],[easing],[fn])

参数意义和显示中的一样 

切换

jQuery对象.toggle([speed],[easing],[fn])

参数意义和显示中的一样 ,表示切换显示或隐藏状态,即如果原来显示,则隐藏,如果原来隐藏,则显示

滑动效果

下拉滑动

jQuery对象.slideDown([speed],[easing],[fn])

参数可省略 ,参数意义和显示中的一样

使jQuery对象从无到有显示出来,并且有一个下拉效果

上拉滑动

jQuery对象.slideUp([speed],[easing],[fn])

参数可省略 ,参数意义和显示中的一样

使jQuery对象从有到无隐藏,并且有一个上拉效果

切换滑动

jQuery对象.slideToggle([speed],[easing],[fn])

参数可省略 ,参数意义和显示中的一样

表示切换滑动,如果对象已经显示了,则上拉,如果对象已经被隐藏,则下拉。

动画队列及停止排队方法

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

可以使用stop()停止之前排队的动画,要写在动画前面

淡入淡出效果

淡入

jQuery对象.fadeIn([speed],[easing],[fn])

参数可省略 ,参数意义和显示中的一样 

使jQuery对象从无到有显示出来,并且有一个淡淡显示的效果

淡出

jQuery对象.fadeOut([speed],[easing],[fn])

参数可省略 ,参数意义和显示中的一样 

使jQuery对象从有到无隐藏,并且有一个淡淡隐藏的效果

切换

jQuery对象.fadeToggle([speed],[easing],[fn])

参数可省略 ,参数意义和显示中的一样 

如果对象已经显示了,则淡出,如果对象已经被隐藏,则淡入。

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

jQuery对象.fadeTo([speed],opacity,[easing],[fn])

opacity:必须要写,0-1,表示不透明度

speed:必须要写,表示速度

自定义动画

jQuery对象.animate(params,[speed],[easing],[fn])

params:想要修改的样式属性,以对象形式传递,必须写。属性名可以不用带引号,复合属性采用驼峰命名法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="jQuery.js"></script>
		<style>
			div{
				width: 300px;
				height: 300px;
				background-color: #DB7093;
				position: absolute;
			}
		</style>
	</head>
	<body>
		<button>移动</button>
		<div></div>
		<script>
			//绑定事件click
			// 点击按钮,div盒子向右移动
			$('button').click(function(){
				$('div').animate({
					left:500,
				},500);
			})
		</script>
	</body>
</html>

jQuery的属性操作

设置或获取元素的固有属性

利用prop('属性名')获取,利用prop('属性名','属性值')设置固有属性

设置或获取元素的自定义属性

利用attr('属性名')获取,利用attr('属性名','属性值')设置固有属性

数据缓存

data()方法可以在制定元素上存取数据,并不会修改DOM元素结构,一旦页面刷新,之前存储的数据就会清空

使用data('数据名','数据值')存数据,使用data('数据名')取数据

data()方法也可以用来读取H5设置的属性(以data-开头),只不过读取时属性名那里不需要加上data-

内容文本值

主要针对元素的内容和表单的值

获取或设置普通元素内容

使用html()获取普通元素内容,使用html('修改后的内容')设置元素内容

这里的内容包括元素内容中的标签

获取元素文本内容

只获取元素内容中的文本内容

使用text()获取普通元素内容,使用text('修改后的内容')修改,注意,修改后,原来元素内部的标签也会被替代

获取设置表单值

使用val()获取表单内容,使用val('修改后的内容')修改

jQuery元素操作

遍历元素

jQuery隐式迭代会对同一类元素进行同一操作

如果需要对同一类元素进行不同操作,则需要进行遍历

方法一:

//index是每个元素的索引号,domEle是每个DOM对象
$('div').each(function(index,domEle){

})

遍历中,要操作jQuery对象时,使用$(domEle)

方法二:

//object是遍历的对象
//index是每个元素的索引,element是遍历对象
$.each(object,function(index,element){
})

可用于遍历任何对象,主要用于数据处理,比如数组,对象

创建元素

用$符号将标签封装,例如:$('<li></li>')

添加元素

内部添加

目标jQuery对象.append('内容'),这里将添加内容放到原来的元素的子元素的最后面

目标jQuery对象.prepend('内容'),这里将添加内容放到原来的元素的子元素的最前面

外部添加

目标jQuery对象.after('内容'),这里将添加内容放到目标元素后面

目标jQuery对象.before('内容'),这里将添加内容放到目标元素前面

删除元素

目标jQuery对象.remove(),删除目标元素

目标jQuery对象.empty(),删除目标元素集合中的所有子元素

目标jQuery对象.html(''''),清除所有子元素,和empty一样

jQuery里的尺寸、位置操作

尺寸

 如果没有参数,获取相应的值

如果设置了数字参数,则是修改相应值,数字不带单位

 jQuery位置

offset()

设置或获取元素相对于文档的偏移,返回的是一个对象,参数也是一个对象,对象里面有两个属性:top和left,可以使用offset().top/offset().left访问

position()

获取元素相对于带有定位的父元素的偏移,返回的是一个对象,对象里面有两个属性:top和left

只能获取不能设置

scrollTop()/scrollLeft()

设置或获取元素被卷去的头部或左侧

一般使用$(document).scrollTop()返回网页被卷去的头部

示例:左侧导航栏

html文件:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.t{
				height: 300px;
				background-color: blueviolet;
			}
			.bd{
				width: 600px;
				background-color: #050505;
				margin: 10px auto;
				
			}
			.bd:nth-child(2){
				height: 400px;
				background-color: #DB7093;
			}
			.bd:nth-child(3){
				height: 600px;
				background-color:#EEE8AA;
			}
			.bd:nth-child(4){
				height: 500px;
				background-color: aqua;
			}
			.bd:nth-child(5){
				height: 700px;
				background-color: antiquewhite;
			}
			.daohang{
				position: fixed;
				left: 0;
				top: 150px;
				width: 50px;
				height: 105px;
				display: none;
			}
			.daohang div{
				background-color: #D3D3D3;
				margin: 5px;
				height: 20px;
				line-height: 20px;
				text-align: center;
			}
			.daohang .current{
				background-color: red;
			}
		</style>
		<script src="jQuery.js"></script>
		<script src="scroll.js"></script>
	</head>
	<body>
		<div class="t"></div>
		<div class="bd">1</div>
		<div class="bd">2</div>
		<div class="bd">3</div>
		<div class="bd">4</div>
		<div class="daohang">
			<div class="current">1</div>
			<div>2</div>
			<div>3</div>
			<div>4</div>
		</div>
	</body>
</html>

js文件:

$(function(){
	// 判断页面滚动到bd盒子时,导航栏出现
	var flag=true;
	function daoscroll(){
		if($(document).scrollTop()>=$('.bd:eq(0)').offset().top-30){
			$('.daohang').css('display','block');
		}else{
			$('.daohang').css('display','none');
		}
	}
	daoscroll();
	// 页面滚动时,左边导航栏变化
	daochange(-1);
	function daochange(j){
		$('.bd').each(function(index,domEle){
			if($(document).scrollTop()>=$(domEle).offset().top-30){
				if(j<=index){
					j=index;
				}
			}
		})
		if(j!=-1){
			$('.daohang div').eq(j).addClass('current').siblings().removeClass('current');
		}
	}
	$(window).scroll(function(){
		var j=-1;
		daoscroll();
		if(flag){
			daochange(j)
		}
	})
	// 点击导航栏,滚动,到达目标位置
	$('.daohang div').each(function(index,domEle){
		$(domEle).click(function(){
			flag=false;
			var i=index;
			$(this).addClass('current').siblings().removeClass('current');
			var h=$('.bd').eq(i).offset().top
			$('body,html').stop().animate({
				scrollTop:h
			},function(){
				flag=true;
			})
		})
	})
})

jQuery事件

事件注册

jQuery元素.事件(function(){})

事件处理

使用on()方法,在元素上绑定一个或多个事件的处理函数

jQuery元素.on(events,[selector],fn)

events:一个或多个用空格分隔的事件类型,如click、mouseover

selector:元素的子元素选择器

fn:回调函数

这样可以给多个事件绑定同一个处理函数

也可以给多个事件绑定不同的处理函数,使用对象的方式,见示例

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			div{
				width: 100px;
				height: 100px;
				background-color: #DB7093;
			}
		</style>
		<script src="jQuery.js"></script>
	</head>
	<body>
		<div></div>
		<script>
			// 鼠标经过变红,离开变回粉色,点击变蓝
			$('div').on({
				mouseover:function(){
					$(this).css('backgroundColor','red');
				},
				click:function(){
					$(this).css('backgroundColor','blue');
				},
				mouseout:function(){
					$(this).css('backgroundColor','pink');
				},
			})
		</script>
	</body>
</html>

事件委托

可以使用on()方法进行委托,即把原来加给子元素身上的事件绑定在父元素身上,在On()方法的参数中加上select参数,为元素的子元素选择器,这样事件虽然是绑定在父元素上的,但在子元素上触发事件

动态元素绑定事件

on()方法也可以给动态创建的元素绑定事件

事件解绑

可以使用off()解绑事件

jQuery对象.off('事件名','子元素选择器')

如果参数为空,则解除该元素绑定的所有事件,也可以通过加上子元素选择器解绑事件委托

只能触发一次事件

one(),其用法与on()基本一致

自动触发事件

可以使用jQuery元素.事件名()自动触发事件

也可以使用jQuery元素.trigger('事件名')

还可以使用jQuery元素.triggerHandler('事件名'),这种方法不会获得元素的默认行为

jQuery事件对象

与传统JS的事件对象基本一致

jQuery对象拷贝

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

 浅拷贝是把拷贝对象中的复杂数据类型的地址拷贝给目标对象,深拷贝是开辟一个新的内存空间存储拷贝对象中的复杂数据类型

jQuery多库并存

jQuery使用$符作为标示符,但有时候其他的js库也会使用$,为了让jQuery和其他js库不冲突,我们可以将$更换为jQuery。也可以使用 var test=$.noConflict()将标示符更换为我们自己设定的标识符test(也可以为别的名字)

jQuery插件

jQuery插件可以实现更加复杂的功能

常用网站:http://www.jq22.com/  http://www.htmleaf.com/

图片懒加载

图片懒加载就是使用延迟加载,当页面滑动到可视区域之后再显示图片,可以提高网页下载速度,也可以减轻服务器负载

可以使用插件实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值