web前端技术笔记(十二)jQuery介绍、选择器、样式操作

jquery介绍

jQuery是目前使用最广泛的javascript函数库。据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库。微软公司甚至把jQuery作为他们的官方库。

jQuery的版本分为1.x系列和2.x、3.x系列,1.x系列兼容低版本的浏览器,2.x、3.x系列放弃支持低版本浏览器,目前使用最多的是1.x系列的。

jquery是一个函数库,一个js文件,页面用script标签引入这个js文件就可以使用。

jquery的口号和愿望 Write Less, Do More(写得少,做得多)

1、http://jquery.com/ 官方网站
2、https://code.jquery.com/ 版本下载

jquery加载

将获取元素的语句写到页面头部,会因为元素还没有加载而出错,jquery提供了ready方法解决这个问题,它的速度比原生的 window.onload 更快。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
	<script type="text/javascript">

		window.onload = function(){
      
      
			var oDiv = document.getElementById('div1');
			alert('原生弹出的'+oDiv);
		}
		/*
		
		// ready 比window.onload 要快:
		//原因是,window.onload是等标签加载完后,再渲染完之后才运行,
		// ready是等标签加载完后就运行

		// ready的完整写法:
		$(document).ready(function(){
			var $div = $('#div1');
			alert('jquery弹出的'+$div);

		})
		*/

		// ready的简写:
		$(function(){
      
      
			var $div = $('#div1');
			alert('jquery弹出的'+$div);
		})



	</script>
</head>
<body>
	<div id="div1">这是一个div元素</div>
</body>
</html>

jquery引入容易出错的写法

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<!--  不能直接在jquery的引入标签里写js代码,需要另外写一个script标签,在这个标签里面写js代码   -->
	<script type="text/javascript" src="js/jquery-1.12.4.min.js">
		
		$(function(){
      
      


		})

	</script>

</head>
<body>
	<div id="div1">div元素</div>
</body>
</html>

jquery选择器

jquery用法思想一

选择某个网页元素,然后对它进行某种操作

jquery选择器
jquery选择器可以快速地选择元素,选择规则和css样式相同,使用length属性判断是否选择成功。

$('#myId') //选择id为myId的网页元素
$('.myClass') // 选择class为myClass的元素
$('li') //选择所有的li元素
$('#ul1 li span') //选择id为为ul1元素下的所有li下的span元素
$('input[name=first]') // 选择name属性等于first的input元素
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
	<script type="text/javascript">		
		$(function(){
      
      

			var $div = $('#div1');
			$div.css({
      
      'color':'red'});


			var $div2 = $('.box');
			$div2.css({
      
      'color':'green'});


			var $li = $('.list li');
			// 带“-”的样式属性,可以写成驼峰式,也可以写成原始
			$li.css({
      
      'background-color':'pink','color':'red'});

		});

	</script>
</head>

<body>
	<div id="div1">这是一个div元素</div>

	<div class="box">这是第二个div元素</div>
	<div class="box">这是第三个div元素</div>

	<!-- ul.list>li{$}*8 -->

	<ul class="list">
		<li>1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
		<li>5</li>
		<li>6</li>
		<li>7</li>
		<li>8</li>
	</ul>

</body>
</html>

对选择集进行过滤

$('div').has('p'); // 选择包含p元素的div元素
$('div').not('.myClass'); //选择class不等于myClass的div元素
$('div').filter('.myClass'); //选择class等于myClass的div元素
$('div').eq(5); //选择第6个div元素

选择集转移

$('div').prev(); //选择div元素前面紧挨的同辈元素
$('div').prevAll(); //选择div元素之前所有的同辈元素
$('div').next(); //选择div元素后面紧挨的同辈元素
$('div').nextAll(); //选择div元素后面所有的同辈元素
$('div').parent(); //选择div的父元素
$('div').children(); //选择div的所有子元素
$('div').siblings(); //选择div的同级元素
$('div').find('.myClass'); //选择div内的class等于myClass的元素
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
	<script type="text/javascript">
		$(function(){
      
      

			/*

			var $div = $('div');
			$div.css({'backgroundColor':'gold'});

			*/

			$('div').css({
      
      'backgroundColor':'gold'});

			$('div').has('p').css({
      
      'fontSize':'30px'});

			$('div').eq(4).css({
      
      'textIndent':'20px'});

			$('div').eq(4).prev().css({
      
      'color':'red'});


			$('div').find('.tip').css({
      
      'fontSize':'30px'});



		})
	</script>
</head>
<body>
	<div>1</div>
	<div><p>2</p></div>
	<div>3</div>
	<div>4</div>
	<div>5</div>
	<div>6</div>
	<div>7</div>
	<div><span>8</span><span class="tip">9</span></div>
</body>
</html>

判断是否选择到了元素

jquery有容错机制,即使没有找到元素,也不会出错,可以用length属性来判断是否找到了元素,length等于0,就是没选择到元素,length大于0,就是选择到了元素。

var $div1 = $('#div1');
var $div2 = $('#div2');
alert($div1.length); // 弹出1
alert($div2.length); // 弹出0
......
<div id="div1">这是一个div</div>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
	<script type="text/javascript">
		$(function(){
      
      

			$div = $('#div1');

			alert($div.length);


			// 没有选中元素,也不会报错,程序正常运行
			$div2 = $('#div2');


			alert($div2.length);
			// if($div2.length>0) 通过length属性来判断是否选中了元素


		})
	</script>
</head>
<body>
	<div id="div1">div元素</div>
	
</body>
</html>

jquery样式操作

jquery用法思想二

同一个函数完成取值和赋值

操作行间样式

// 获取div的样式
$("div").css("width");
$("div").css("color");

//设置div的样式
$("div").css("width","30px");
$("div").css("height","30px");
$("div").css({fontSize:"30px",color:"red"});
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
	<script type="text/javascript">
		$(function(){
      
      

			var $div = $('#box');

			// 读取属性值
			var sTr = $div.css('fontSize');

			alert(sTr);

			// 写属性值
			$div.css({
      
      'color':'red','backgroundColor':'pink','fontSize':'20px'});


			/*
			原生js无法读取行间没有定义的css属性值
			var oDiv = document.getElementById('box');
			alert(oDiv.style.fontSize);

			*/

		})

	</script>
</head>
<body>
	<div id="box">div元素</div>
</body>
</html>

__特别注意 __
选择器获取的多个元素,获取信息获取的是第一个,比如:$(“div”).css(“width”),获取的是第一个div的width。

操作样式类名

$("#div1").addClass("divClass2") //为id为div1的对象追加样式divClass2
$("#div1").removeClass("divClass")  //移除id为div1的对象的class名为divClass的样式
$("#div1").removeClass("divClass divClass2") //移除多个样式
$("#div1").toggleClass("anotherClass") //重复切换anotherClass样式
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
	<script type="text/javascript">
		$(function(){
      
      

			var $div = $('.box');

			// 在原来样式名的基础上加上“big”的样式名
			$div.addClass('big');

			// 在原来样式名的基础上去掉“red”的样式名
			$div.removeClass('red');
			
		})

	</script>
	<style type="text/css">
		
		.box{
      
      
			width:100px;
			height:100px;
			background-color:gold;
		}

		.big{
      
      
			font-size:30px;
		}


		.red{
      
      
			color:red;
		}


	</style>
</head>
<body>
	<div class="box red">div元素</div>
</body>
</html>

绑定click事件

给元素绑定click事件,可以用如下方法:

$('#btn1').click(function(){

    // 内部的this指的是原生对象

    // 使用jquery对象用 $(this)

})
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
	<script type="text/javascript">
		$(function(){
      
      
			
			// 绑定click事件
			$('#btn').click(function(){
      
      

				/*
				if($('.box').hasClass('col01'))
				{
					$('.box').removeClass('col01');
				}
				else
				{
					$('.box').addClass('col01');
				}

				简化成下面的写法:

				*/
				$('.box').toggleClass('col01');
			})


		})

	</script>
</head>
<style type="text/css">
	.box{
      
      
		width:200px;
		height:200px;
		background-color:gold;
	}
	.col01{
      
      
		background-color:green;
	}

</style>
<body>
	<input type="button" name="" value="切换样式" id="btn">
	<div class="box">div元素</div>
</body>
</html>

获取元素的索引值

有时候需要获得匹配元素相对于其同胞元素的索引位置,此时可以用index()方法获取

var $li = $('.list li').eq(1);
alert($li.index()); // 弹出1
......
<ul class="list">
    <li>1</li>
    <li>2</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
</ul>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
	<script type="text/javascript">
		$(function(){
      
      

			var $li = $('.list li');

			//alert($li.length); 弹出 8
			//alert($li.eq(3).index()); 弹出3

			alert( $li.filter('.myli').index() );

		})


	</script>
</head>
<body>
	<ul class="list">
		<li>1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
		<li class="myli">5</li>
		<li>6</li>
		<li>7</li>
		<li>8</li>
	</ul>
</body>
</html>

选项卡案例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		.btns input{
      
      
			width:100px;
			height:40px;
			background-color:#ddd;
			border:0;
		}

		.btns .current{
      
      
			background-color:gold;
		}


		.cons div{
      
      
			width:500px;
			height:300px;
			background-color:gold;
			display:none;
			text-align:center;
			line-height:300px;
			font-size:30px;
		}

		.cons .active{
      
      
			display: block;
		}

	</style>
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
	<script type="text/javascript">
		$(function(){
      
      
			var $btn = $('.btns input');
			var $div = $('.cons div');

			$btn.click(function(){
      
      
				// this 指的是原生的this,它表示当前点击的对象,使用jquery的对象需要用$(this)

				// 当前点击的按钮加上current样式后,除了当前,其他的按钮去掉current样式
				$(this).addClass('current').siblings().removeClass('current');

				//alert( $(this).index() ; //弹出当前按钮的索引值
				// 当前点击的按钮对应索引值的div加上active样式,其他的去掉active样式
				$div.eq( $(this).index() ).addClass('active').siblings().removeClass('active');
			})
		})

	</script>
</head>
<body>
	<div class="btns">
		<input type="button" name="" value="01" class="current">
		<input type="button" name="" value="02">
		<input type="button" name="" value="03">
	</div>	
	<div class="cons">
		<div class="active">选项卡一的内容</div>
		<div>选项卡二的内容</div>
		<div>选项卡三的内容</div>
	</div>
</body>
</html>

jquery特殊效果

fadeIn() 淡入

    $btn.click(function(){

        $('#div1').fadeIn(1000,'swing',function(){
            alert('done!');
        });

    });

fadeOut() 淡出
fadeToggle() 切换淡入淡出
hide() 隐藏元素
show() 显示元素
toggle() 切换元素的可见状态
slideDown() 向下展开
slideUp() 向上卷起
slideToggle() 依次展开或卷起某个元素
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		
		.box{
      
      
			width:300px;
			height:300px;
			background-color:gold;
			display:none;
		}
	</style>
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
	<script type="text/javascript">
		
		$(function(){
      
      

			$('#btn').click(function(){
      
      

				/*$('.box').fadeIn(1000,function(){
					alert('动画完了!');
				});
				*/

				/*$('.box').fadeToggle(1000,function(){
					alert('动画完了!');
				});
				*/

				// $('.box').show();

				//$('.box').toggle();

				//$('.box').slideDown();

				$('.box').slideToggle(1000,function(){
      
      
					alert('动画完了')
				});


			})

		})



	</script>
</head>

<body>
	<input type="button" name="" value="动画" id="btn">
	<div class="box"></div>
</body>
</html>

jquery链式调用

jquery对象的方法会在执行完后返回这个jquery对象,所有jquery对象的方法可以连起来写:

$('#div1') // id为div1的元素
.children('ul') //该元素下面的ul子元素
.slideDown('fast') //高度从零变到实际高度来显示ul元素
.parent()  //跳到ul的父元素,也就是id为div1的元素
.siblings()  //跳到div1元素平级的所有兄弟元素
.children('ul') //这些兄弟元素中的ul子元素
.slideUp('fast');  //高度实际高度变换到零来隐藏ul元素

层级菜单案例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>层级菜单</title>
	
	
	<style type="text/css">
		body{
      
      
			font-family:'Microsoft Yahei';
		}
		body,ul{
      
      
			margin:0px;
			padding:0px;
		}
		
		ul{
      
      list-style:none;}


		.menu{
      
      
			width:200px;
			margin:20px auto 0;
		}

		.menu .level1,.menu li ul a{
      
      
			display:block;
			width:200px;
			height:30px;
			line-height:30px;
			text-decoration:none;
			background-color:#3366cc;
			color:#fff;
			font-size:16px;
			text-indent:10px;			
		}

		.menu .level1{
      
      
			border-bottom:1px solid #afc6f6;
			
		}

		.menu li ul a{
      
      
			font-size:14px;
			text-indent:20px;
			background-color:#7aa1ef;
					
		}

		.menu li ul li{
      
      
			border-bottom:1px solid #afc6f6;
		}

		

		.menu li ul{
      
      
			display:none;
		}

		.menu li ul.current{
      
      
			display:block;
		}

		.menu li ul li a:hover{
      
      
			background-color:#f6b544;
		}


	</style>
	
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>

	<script type="text/javascript">
		
		$(function(){
      
      

			$('.level1').click(function(){
      
      

				//当前点击的元素紧挨的同辈元素向下展开,再跳到此元素的父级(li),再跳到此父级的其他的同辈元素(li),选择其他同辈元素(li)的子元素ul,然后将它向上收起。

				// 通过stop() 可以修正反复点击导致的持续动画的问题
				$(this).next().stop().slideToggle().parent().siblings().children('ul').slideUp();




			})

		})

	</script>
</head>
<body>
	<ul class="menu">
		<li>
			<a href="#" class="level1">水果</a>
			<ul class="current">
				<li><a href="#">苹果</a></li>
				<li><a href="#">梨子</a></li>
				<li><a href="#">葡萄</a></li>
				<li><a href="#">火龙果</a></li>
			</ul>
		</li>
		<li>
			<a href="#" class="level1">海鲜</a>
			<ul>
				<li><a href="#">蛏子</a></li>
				<li><a href="#">扇贝</a></li>
				<li><a href="#">龙虾</a></li>
				<li><a href="#">象拔蚌</a></li>
			</ul>
		</li>
		<li>
			<a href="#" class="level1">肉类</a>
			<ul>
				<li><a href="#">内蒙古羊肉</a></li>
				<li><a href="#">进口牛肉</a></li>
				<li><a href="#">野猪肉</a></li>				
			</ul>
		</li>
		<li>
			<a href="#" class="level1">蔬菜</a>
			<ul>
				<li><a href="#">娃娃菜</a></li>
				<li><a href="#">西红柿</a></li>
				<li><a href="#">西芹</a></li>
				<li><a href="#">胡萝卜</a></li>
			</ul>
		</li>
		<li>
			<a href="#" class="level1">速冻</a>
			<ul>
				<li><a href="#">冰淇淋</a></li>
				<li><a href="#">湾仔码头</a></li>
				<li><a href="#">海参</a></li>
				<li><a href="#">牛肉丸</a></li>
			</ul>
		</li>
		
	</ul>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_27251475/article/details/120102088
今日推荐