当前位置:首页 > 前端开发 > 正文内容

jQuery

邻居的猫1个月前 (12-09)前端开发1937

一、JQuery了解

1 .原生JS的问题

咱们会发现原生的JS编程很费事,尤其在兼容性的问题

挑选元素,权限兼容的只要getElementById和getElementsByTagName;其他办法都有兼容问题
款式操作也有兼容问题,还得咱们自己封装,封装getStyle()
动画也费事,也得自己封装,封装animation()
HTML节点操作也挺费事的

JS里边费事的都是和DOM编程有关的,有兼容问题,还的咱们自己封装.

jQuery是原生JS封装的,简化了JS的DOM编程,完美的处理了原生js在DOM操作上的难题

2. JQuery

标语:

​ 写更少的代码,做更多的工作

官方毛遂自荐:

​ jQuery是一个快速、小型的、特性许多的JS库,它把许多事儿都变得简略。jQuery是免费的、开源的。

版别线:

​ 1.x版别

​ 2.x版别

​ 3.x版别

jQuery分压缩版和未压缩版

二、 $() 挑选器

$ 便是jQuery的中心,query便是挑选的意思

**语法**
$(‘挑选器’),jQuery(‘挑选器’)

$能够用jQuery替代,$和jQuery是同一个函数

选中某个或某类元素

<style type="text/css">
	p {
		float:left;
		width: 60px;
		height: 60px;
		background-color: #ccc;
		margin-left: 10px;
		margin-top: 10px;
	}
</style>
<p></p>
<p></p>
<p></p>
<p></p>
<script src="jQuery.js"></script>
<script>
	console.log($)
	$('p').css('background-color','red');
</script>

1. $() 挑选出来的是一个类数组

哪怕挑选的是一个独自的元素,回来的也是一个类数组

console.log($('#box'));
// [div#box]

既然是类数组,就不能直接跟原生js的语法

$('#box').style.backgroundColor = 'red';

上面写法是错的,$()选出的是jQuery目标,

假如想运用元素办法,能够加[0],将jQuery目标转成元素目标

$('#box')[0].style.backgroundColor = 'red';

2. 运用办法(引号问题)

$(‘挑选器’)里边的引号不能丢,在jQuery中只要是以下几个不必加引号,其他悉数需求

不需求加引号的挑选

$(this)
$(document)
$(window)

3. 挑选器问题

jQuery支撑的CSS2.1一切挑选器,也支撑部分CSS3的挑选器

$('div')
$('.box')
$('.box li')
$('*')

4. 文档加载

// 文档加载完毕后履行
$(document).ready(function(){
})
// 简写计划
$(function(){
	console.log($('div'))
})

三. 挑选器

这个是jQuery 的创造 和js没有联系

写在引号里边,:当成挑选的功用符

以下都是序号,挑选器,

1. 挑选一切的p标签

$('p');
$('p').css('background-color','red');

2. 挑选榜首个p标签

$('p:first');
$('p:first').css('background-color','red');

3. 终究一个p标签

$('p:last');
$('p:last').css('background-color','red');

4. 恣意一个p标签

: eq(num); num是要挑选出来第几个p的下标,从0开端

$('p:eq(2)');
$('p:eq(2)').css('background-color','red');

5. 选中某一个规模的p标签

:lt(num); 选中下标小于num的一切标签

$('p:lt(2)');
$('p:lt(2)').css('background-color','red');

:gt(num); 选中下标大于num的一切标签

$('p:gt(2)');
$('p:gt(2)').css('background-color','red');

等于便是:eq()

6. 获取奇偶数

:odd 获取下标为奇数的标签

$('p:odd');
$('p:odd').css('background-color','red');

:even 获取下标为偶数的标签

$('p:even');
$('p:even').css('background-color','red');

留意哦
下标是从0开端的,也便是说下标为偶数的标签其实是咱们看起来的奇数标签

7. 特别的过滤器的办法

7.1 eq能够独自的提炼为办法,能够接连打点调用

$('p').eq(2);
$('p').eq(2).css('background-color','red');

提炼出来的优点是,能够运用变量

var num = 2;
$('p').eq(num).css('background-color','red');
// 不提炼出来的办法,只用用字符串拼接了
$('p:gt('+ num +')').css('background-color','red');

还能够组合运用

$('p:even').eq(2).css('background-color','red');

7.2 first() last() 挑选榜首个终究一个元素的办法

$('div').first().css('background-color','red')

$('div').last().css('background-color','red')

7.3 not() 扫除那些元素

$('div').not('.ta').css('background-color','red')

7.4 hasClass() 判别是否具有某个类名

$('div').click(function(){
	console.log($(this).hasClass('ta'))
})

8. is()

判别是不是回来true,或false

判别点击的这个p标签是不是有这个类叫做t

$('p').click(function(){
	alert($(this).is('.t'))
})

还能够判别是不是奇数的,is()里边能够写挑选器

$('p').click(function(){
	alert($(this).is(':odd'))
})

四. 序与迭代

1. 序号 eq()

依照挑选器选中的元素,然后在经过序号挑选

<div class="box1">
	<p></p>
	<p></p>
	<p></p>
</div>
<div class="box2">
	<p></p>
	<p></p>
	<p></p>
</div>
<script>
	$('.box2 p').eq(1);
	$('p').eq(1);
	//依照需求的规矩,上面两种写法选中并不是同一个p标签
</script>

也便是说 $()函数将回来一个目标行列,用eq来准确挑选这个序号的某个元素.

2. index() 办法

回来这个元素在亲兄弟中的排名,无视挑选器怎样选.

<div class="box1">
	<p></p>
	<p></p>
	<p></p>
</div>
<div class="box2">
	<p></p>
	<p></p>
	<p></p>
</div>
<script>
	$('p').click(function(){
		alert($(this).index());
	})
</script>

$(this).index()是一个很常见的写法,表明触发这个工作的元素,在亲兄弟中的排名.

运用index()办法写对应

// 工作绑定在box1里边的p
$('.box1 p').click(function(){
	// 改动的是box2里边的对应的p
	$('.box2 p').eq($(this).index()).css("background-color","red");
})

3. each() 办法 迭代

表明遍历节点,也叫作迭代契合条件的节点

$('p').each(function(i){
	// i 为遍历的下标 0,1,2...
	$(this).css('width',50*i)
})

4. size() 办法 和 length 特点

size() 办法和 length 特点是相同的的, 获取jQuery目标中元素的个数.

这两个数字永久相同

$('p').length;
$('p').size();

5. get() 办法

get()办法和eq()办法根本共同,都仰赖$()的序列,eq()回来的是jQuery目标.

而get()办法回来原生的JS元素,类似于直接jQuery元素加[0]

$('p').get(0).innerHTML = '';
$('p')[0].innerHTML = '';

五. CSS 办法

CSS办法能够读取款式,能够设置款式

1. 读取款式值

读取款式,能够读取核算后的款式,写一个参数,为获取值的特点

参数为特点字符串,有必要加引号

读取的值有单位

$('p:first').css('background-color');

2. 设置一个特点值

假如只设置一个特点值,需求穿两个参数,

榜首个参数为需求设置值的特点

第二个参数为需求设置的值,假如为数值,不需求加单位,

$('p:first').css('background-color','blue');
$('p:first').css('width',200);

3. 一起设置多个特点值

假如想要一起设置多个特点值,能够写成JSON

$('p:lt(3)').css({
	'width': 100,
	'height': 100,
	'background-color': 'blue'
});

当然你也能够写多条独自设置款式

4. 设置的特点能够多样

设置的特点不只能够为改动后的值,还能够设置+= 的值,便是在原有的基础上加多少像素

$('p:eq(3)').css('width','+=20px');
$('p:eq(3)').css('width','+=20');

以上两种写法相同

5. 设置获取自定义特点attr()

5.1 获取自定义特点

$('div').attr('data-title');

5.2 设置自定义特点

$('div').attr('data-title','wuwei');

6. 关于class类名

6.1 增加类名 addClass()

$('div').addClass('title')

6.2 删去类名 removeClass()

$('div').removeClass('title')

6.3 切换类名 triggerClass()

$('div').click(function(){
	$('div').toggleClass('title')
})

7. 关于节点值

7.1 html()

便是innerHTML

$('div').html();  // 获取值
$('div').html('<h2>this is h2</h2>'); // 设置值

7.2 text()

便是innerText

$('div').text();  // 获取值
$('div').text('<h2>this is h2</h2>'); // 设置值

六. 节点联系

1. children()

选中一切的子元素

表明选取亲儿子,不挑选子孙,挑选一切的子元素

$('#box').children()

挑选一切子元素中的div元素

$('#box').children('div')

还能够增加挑选器

$('#box').children('div:odd')

2. find()

查询一切的子孙挑选器

回来子孙一切元素的列表

$('#box').find('p')

留意,和children()办法不相同,find()办法里边,有必要写参数,表明子孙的谁,

find便是寻觅的意思,便是你找子孙里的谁

3. parent()

找父元素,任何一个元素只要一个父元素,

$('p').parent()

4. parents()

找一切的先人元素,能够传参数,找哪一个先人

$('p').parents('div')

5. sibling()

找一切的亲兄弟元素节点

$('p').sibling()

能够加挑选器

$('p').sibling('div')

6. prev() next() prevAll() nextAll()

前一个兄弟,后一个兄弟,前一切的兄弟,后一切的兄弟元素节点

7. offsetParent()

查找定位父级

$('p').offsetParent('div')

七. 节点操作

1. append()

在父元素后边增加子节点

父节点.append(子节点)

$('#box').append('<p>好的</p>')

1.2 $()能够将一个一般的节点字符串转成jQuery目标

var $p = $('<p>this is p</p>');
// 不能这么写 ,下面的写法是挑选文档中的p标签了
$('p')

1.3 创立节点

$('<p></p>')

$()不只仅能挑选节点也能创立节点

2. appendTo()

将一个jQuery元素增加到别的一个元素中

和append()办法是相反的,被迫方式,追加于

$('<p>好的</p>').append($('#box'))

3. prepend()

在父元素最前面增加节点元素

$('#box').prepend('<p>好的</p>')

4. prependTo()

prepend()被迫方式刺进到父元素节点最前面

$('<p>好的</p>').prepend($('#box'))

5. after()

在选中的元素后边刺进一个兄弟元素节点

一切p标签后边刺进一个h3兄弟元素

$('p').after('<h3>我是h3标签</h3>')

6. before()

在前面刺进一个兄弟元素节点

$('p').before('<h3>我是h3标签</h3>')

7.insertBefore()

不同于原生的办法,在兄弟节点前刺进新的节点

$('<p>好的</p>').insertBefore($('p')[2])

8. wrap()

给选中的元素外边增加一个包裹元素

$('div').wrap('<p></p>')

9. wrapAll()

将一切的选中的元素外套一个元素

$('div').wrapAll('<p></p>')

10. replaceWith()

将选中的元素替换掉,元素节点替换

$('div').replaceWith('<p></p>')

11. empty()

清空元素里边的内容

$('div').empty()

12. remove()

删去节点,删去页面上一切的p标签

$('div').remove()

13. clone

节点克隆

参数为布尔值

$('div').clone();
$('div').clone(true);
// true表明要克隆div元素身上的工作

八. 工作监听

1. 经过工作名绑定工作

在jQuery里边,就连点击工作都变成回调函数了,

工作名一概不加on

$('.box1').click(function(){
	// 这儿便是点击box1要做的工作
})

比如:

// 鼠标进入
$('p').mouseenter(function(){
	$(this).css('background-color','blue');
})
// 鼠标脱离
$('p').mouseleave(function(){
	$(this).css('background-color','red');
})

2. 经过on绑定工作

$('.box1').on('click',function(){
	// 这儿便是点击box1要做的工作
})

3. 免除工作绑定off

$('.box1').off('click')

4. 只绑定一次工作one()

$('.box1').one('click',function(){
	// 这儿便是点击box1要做的工作
})

5. 移入移出工作

$('.box1').hover(function(){
	// 鼠标移入触发
	console.log(1);
},function(){
	// 鼠标移出触发
	console.log(2);
})

6. 工作目标工作源

e.target 获取的是元素的DOM元素

$(document).click(function(e){
	console.log(e.target);   // 原生DOM元素
})

九. animate 办法

动画办法 animate

1. animate 办法的运用

榜首个参数:结尾JSON

第二个参数: 动画运转的时刻,毫秒

 $('p:eq(3)').animate({'margin-top': 300},2000);

2. 动画运转完的回调函数

第三个参数为动画运转完后的参数

布景色彩是不能在动画里突变的,只要在回调里完结,假如想让色彩渐渐突变需求运用css3技能.

$('p:eq(3)').animate({'margin-top': 300},2000,function(){
	// alert('运转完结');
	$(this).css('background-color','red');
});

jQuery动画默许不是匀速的 ,是easeInOut

3. 动画排队

3.1. 同一个元素的不同动画会排队

 $('p:eq(3)').animate({'top': 300},2000);
 $('p:eq(3)').animate({'left': 300},2000);

jQuery的动画和咱们封装的不相同,不是斜着走的,而是先向下运动,完毕后在向右移动

由于jQuery默许有一个处理机制,叫做 动画排队

动画排队:

当一个元素接纳到了两个animate指令后,后边的animate会排队

所以上面的动画,先竖着跑在横着跑,总动画时长为4000毫秒

假如想斜着跑就写在一个animate里边

 $('p:eq(3)').animate({'top': 300,'left': 300},2000);

咱们自己封装的动画办法不如它的原因就在这儿,没有动画排队

3.2. 不同的元素动画不会排队 是一起的

这儿的p挑选的是多个元素,不排队一起运转动画

 $('p').animate({'top': 300},2000);

十. 动画相关的办法

1. 内置的show(),hide(),toggle()办法

show()显现,hide()躲藏,toggle()切换

运用办法:

show([time[,callback]])

参数都是可选的

1.1 没有参数的时分

$('div').show();  // 让div元素显现
$('div').hide();  // 让div元素躲藏,增加display:none
$('div').toggle();// 切换显现状况,自行带有判别,假如显现,则躲藏,假如躲藏则显现

1.2 假如有数值参数,将变为动画,榜首个参数为运动速度或时刻

速度单词,fast normal, slow ,参数为字符串

假如传入的为时刻,则单位为毫秒数

让元素在显现与影藏之间动画运动1s,还有透明度改换,

$('div').show(1000);  // 从左上角缓缓打开
$('div').hide(1000);  // 缓缓缩小到左上角,运动完结增加display:none
$('div').toggle(1000);// 切换显现状况,自行带有判别,假如显现,则躲藏,假如躲藏则显现

1.3 第二个参数为运动完结后的回调

$('input:eq(0)').click(function(){
	$('div').show(1000,function(){
		$(this).css('background','red');  // 动画运转完履行的回调函数
	});
})

2. slideDown(),slideUp(),slideToggle()

滑动,卷帘运动,这个动画改动的就只要元素的高度

运用办法:

slideDown([time[,fn]])

参数都是可选的

2.1 不加参数的状况

slideDown()办法的动画机理

一个display:none;的元素,瞬间显现,瞬间高度变为0,然后jQuery自己捕捉原有的height作为动画的要点.

最好不要用行内元素做动画

等价于:

$(‘div’).show(); // 瞬间显现

var oldHeight = $(‘div’).css(‘height’); // 记住原有高度

$(‘div’).css(‘height’:0); // 将高度设置为0

$(‘div’).animate({‘height’:oldHeight},1000); // 履行高度从0到原有高度的动画

$('div').slideDown();  // 下滑打开
$('div').slideUp();    // 上滑回收
$('div').slideToggle();// 滑动切换

$('input:eq(0)').click(function(){
	$('div').slideDown();
})
$('input:eq(1)').click(function(){
	$('div').slideUp();
})
$('input:eq(2)').click(function(){
	$('div').slideToggle();
})

2.2 榜首个参数为运动速度或时刻

速度单词,fast normal, slow ,参数为字符串

假如传入的为时刻,则单位为毫秒数

$('div').slideDown(1000);

2.3 第二个参数为回调函数

$('div').slideDown(function(){
	$(this).css('background','red')
});

2.4 结合上面两种办法主动履行

$('div').show(1000,function(){
	$(this).slideUp(1000,function(){
		$(this).slideDown(1000,function(){
			$(this).hide(1000)
		})
	})
})

3. fadeIn(),fadeOut(),fadeTo(),fadeToggle();

淡入淡出的一系列办法

假如元素有opacity特点,一定要了解,你所设置的opacity值为,淡入的结尾值,假如你设置为0,那么元素将永久淡入不了;

fadeIn() 动画机理:

一个display:none的元素,瞬间可见,然后透明度瞬间变为opacity:0,然后自己的opacity开端改换,假如自己没有设置opacity,就变为1

3.1 不加参数履行淡入淡出

$('div').fadeIn();      // 淡入
$('div').fadeOut();     // 淡出 
$('div').fadeTo();      // 淡入到哪个数字,不传参数没作用,最好是时刻和终究的opacity值相同设置.
			// 这个比较特别,假如起点至比较大,便是淡出,起点值小,便是淡入
						

$('div').fadeToggle();  // 淡入淡出切换

3.2 榜首个参数为速度或时刻

$('div').fadeIn(1000);      // 淡入进程1000完结
$('div').fadeOut(1000);     // 淡出 
$('div').fadeTo(1000);      // 榜首参数为过渡时刻,第二个可是才是淡入到哪个数字
$('div').fadeToggle(100);  // 淡入淡出切换

3.3 第二个参数是回调函数

$('div').fadeIn(1000,function(){
});

比较特别的是fadeTo()

fadeTo() 办法第二个参数是,透明度改换的结尾值,第三个参数才是回调函数

$('div').fadeTo(1000,0.6,function(){
});

4. stop() 中止动画

关于动画中止一共有四种,不同的参数状况不同

stop();
stop(true);
stop(true,true);
stop(false,true);

4.1 stop()没有参数的状况

stop ()中止动画假如没有参数,则表明中止当时的animate动画,可是不铲除动画行列,当即履行后边的animate动画

$('div').stop();

4.2 stop(true)

中止当时animate动画,而且铲除动画行列,盒子此刻留在中止动画时的方位

$('div').stop(true);

4.3 stop(true,true)

中止当时animate动画,盒子瞬间停当时animate动画的结尾方位,而且铲除动画行列,

能够了解为瞬间履行完当时动画,而且铲除动画行列

$('div').stop(true,true);

4.4 stop(false,true)

瞬间完结当时的animate动画,可是不会铲除动画行列,而且履行后边的动画,

$('div').stop(false,true);

有人可能会有疑问,为什么没有stop(true,false);

其实stop(true),便是stop(true,false);后边的false能够省掉,

现在就理解了,stop()便是stop(false,false);

总结会发现,

榜首个参数为是否铲除动画行列,true,铲除动画行列,false不铲除动画行列

第二个参数为,中止当时animate动画,中止后动画的方位,true为,瞬间完毕动画,动画中止后方位为当时动画的结尾,false,中止动画值,元素停留在中止动画的方位

动画事例:

<style type="text/css">
	div {
		position:absolute;
		top:100px;
		left:100px;
		width: 100px;
		height: 100px;
		background-color: skyblue;
	}
</style>
<input type="button" value="stop()">
<input type="button" value="stop(true)">
<input type="button" value="stop(true,true)">
<input type="button" value="stop(false,true)">
<div></div>
<script type="text/javascript" src="jQuery.js"></script>
<script type="text/javascript">
	// 增加四个动画
	$('div').animate({'left':800},2000);
	$('div').animate({'top':300},2000);
	$('div').animate({'left':100},2000);
	$('div').animate({'top':100},2000);
	$('input:eq(0)').click(function(){
		$('div').stop();
	})
	$('input:eq(1)').click(function(){
		$('div').stop(true);
	})
	$('input:eq(2)').click(function(){
		$('div').stop(true,true);
	})
	$('input:eq(3)').click(function(){
		$('div').stop(false,true);
	})
</script>

4.5 stop()能够用来避免动画堆集

每次点击都会在动画行列里增加一个动画,动画会排队

<script type="text/javascript">
	$('input:eq(0)').click(function(){
		$('div').animate({'left':100},1000);
	})
	$('input:eq(1)').click(function(){
	   $('div').animate({'left':900},1000);
	})
</script>

就像定时器,设表先关

用动画先封闭前面的动画

能够接连打点的调用,先铲除动画行列,再行新的动画

$('input:eq(0)').click(function(){
	$('div').stop().animate({'left':100},1000);
})
$('input:eq(1)').click(function(){
	$('div').stop().animate({'left':900},1000);
})

5. finish()

瞬间完结一切动画行列

$('input:eq(4)').click(function(){
	$('div').finish();
})

6. deley()

推迟,能够运用接连打点,有必要放在运动句子之前

$('div').delay(1000).animate({'left':500},1000);
$('div').delay(1000).slideUp();

留意hide()不加参数,就不是动画,是瞬间完结的,加参数哪怕数字1也是动画

$('div').delay(1000).hide(3000);

7. is(“:animted”)

判别一个元素是否在运动中,能够避免动画堆集

$('div:eq(3)').animate({'width':900},8000);
$('div').click(function(){
	alert($(this).is(':animated'))
});

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=423

分享给朋友:

“jQuery” 的相关文章

vue定时任务,Vue.js中的定时任务实现与优化

1. 使用`setInterval`: 你可以使用`setInterval`函数来创建一个定时任务。这个函数接受两个参数:一个要执行的函数和一个时间间隔(以毫秒为单位)。 ```javascript setInterval =˃ { // 这里放置你想要定时执行的代码 },...

css有几种引入方式,网页制作css代码大全

CSS(层叠样式表)的引入方式主要有以下几种: ```4. CSS导入(CSS Import): 这种方式是在CSS文件中使用`@import`规则引入另一个CSS文件。这种方式可以对多个CSS文件进行合并和重用。 ```css @import url; @import url;...

html网页特效代码,html官方下载免费版

html网页特效代码,html官方下载免费版

创建一个HTML网页特效需要结合HTML、CSS和JavaScript。下面是一个简单的示例,创建一个带有旋转特效的按钮:```html旋转特效按钮 .rotatebutton { padding: 10px 20px; backgroundcolor: 4CAF50; colo...

html课程表代码

html课程表代码

创建一个HTML课程表通常涉及到使用表格(``)元素来组织数据。下面是一个简单的HTML课程表示例,展示了如何使用``、``(行)、``(表头)和``(单元格)来构建课程表:```html课程表 table { width: 100%; bordercollapse: collapse...

css鼠标变小手, 什么是鼠标变小手样式?

css鼠标变小手, 什么是鼠标变小手样式?

要将CSS中的鼠标指针变为小手形状,你可以使用`cursor`属性并设置其值为`pointer`。这样,当用户将鼠标悬停在具有该样式的元素上时,鼠标指针就会变成一个小手形状,表示该元素是可点击的。下面是一个简单的示例:```cssa { cursor: pointer;}```这段代码会将所有``...

html生成二维码,```html        QR Code Generator

html生成二维码,```html QR Code Generator

要在HTML中生成二维码,你可以使用JavaScript库,比如`qrcode.js`。这个库允许你直接在浏览器中生成二维码。以下是一个基本的例子,展示如何使用`qrcode.js`在HTML中生成二维码:1. 首先,在你的HTML文件中引入`qrcode.js`。你可以从CDN获取它,或者下载并本...