jQuery框架

文章目录

  • 初始jQuery
    • jQuery能做什么
    • 导入jQuery库
    • jQuery程序调试
  • jQuery选择器
    • 基本选择器
    • 属性选择器
    • 内容选择器
    • 层次选择器
    • 表单选择器
    • 可视性选择器
    • 筛选选择器
      • 注意:
    • 选择器示例
      • 创建页面
        • 应用jQuery
        • 注意1
        • 注意2
      • 设置列表项水平排列
  • 操作jQuery对象和DOM元素
    • 链式操作
    • DOM筛选方法
    • DOM节点遍历方法
    • jQuery对象遍历方法
      • `.each()`
      • `.map()`
      • 注意:
      • 不要遗漏这个标签:
  • jQuery中的事件
    • jQuery初始化代码
      • DOM准备就绪
      • 网页资源加载完毕
      • .on()方法
    • 使用jQuery手工触发事件

初始jQuery

jQuery能做什么

  1. 通过强大的选择器功能,准确获取需要查询或操作的文档元素
  2. 修改页面外观,即使在页面呈现后,仍然能够改变文档的样式属性
  3. 修改文档内容,可以改变文本,插入或翻转图像,列表重新排序,甚至对HTML文档的整个结构都能重写或扩充
  4. 获取各类页面事件,及时响应用户的交互操作
  5. 通过内置方法,能够为页面添加淡入,擦除等各类动态效果
  6. 通过Ajax技术,无需刷新页面即可从服务器获取信息
  7. 简化常见的JavaScript任务

导入jQuery库

<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
<script src="jquery-3.5.1"></script>
<style>
	.hightlight{
     
		background-color: #CCC;
		font-style:italic;
		font-weight:bold;
		margin:5px;
	}
	
</style>
<script>
$(document).ready(function(){
     
	$('div').addClass('hightlight');
})
</script>
</head>
<body>	
<h1>在线课程:jQuery基础</h1>
<div>讲师:朱枫</div>
<div>学校:just</div>
<div>部门:软件工程</div>
</body>
</html>

jQuery框架_第1张图片
在jQuery代码中使用$(document).ready()时,位于其中的所有代码都会在DOM加载后立即执行、

jQuery程序调试

  1. 使用浏览器的开发者工具调试程序(F12)
  2. 使用console.log方法输出表达式或变量的值
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
<script src="jquery-3.5.1"></script>
<style>
	.hightlight{
     
		background-color: #CCC;
		font-style:italic;
		font-weight:bold;
		margin:5px;
	}
	
</style>
<script>
$(document).ready(function(){
     
	$('div').addClass('hightlight');
	console.log("Helloworld");
})
</script>
</head>
<body>	
<h1>在线课程:jQuery基础</h1>
<div>讲师:朱枫</div>
<div>学校:just</div>
<div>部门:软件工程</div>
</body>
</html>

jQuery框架_第2张图片
jQuery框架_第3张图片

<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
<script src="jquery-3.5.1"></script>

</style>
<script>
$(document).ready(function(){
     
	console.log("我是小彪彪");
})
</script>
</head>
<body>	
</body>
</html>

jQuery框架_第4张图片
jQuery框架_第5张图片
断点调试:
jQuery框架_第6张图片
sources中,鼠标左击行号即可,然后可按下方进行单步调试
jQuery框架_第7张图片
jQuery框架_第8张图片
也可以进行watch添加进行变量查看
jQuery框架_第9张图片

jQuery选择器

基本选择器

  1. 加载jQuery库后,就可使用$(selector)选择元素
选择器示例 描述
$("*") 选择所有HTML元素
$(".test") 选择class属性为test的所有HTML元素
$("#test") 选择id属性为test的HTML元素
$("div") 选择所有div元素
$("div,span,p") 选择所有的
,,

元素

$("ul.list") 选择class属性为list的所有
    元素

属性选择器

  1. 根据属性值选择HTML元素
选择器示例 描述
$("p[id]") 选择有id属性的所有

元素

$("input[value=0]") 选择属性value为0的所有元素
$("p[class*=Content]") 选择class属性包含Content的所有的p元素,例如:

……

……

$("img[src^='icons\\/']") 选择属性src以icons/开头的所有元素,\\用来对字符/进行转义
$("input[value!='text']") 选择属性value不为text或没有属性value的所有
$("p[id][class$=menu]") 选择有id属性且class属性以menu结尾的所有

元素

内容选择器

  1. 根据内容选择HTML
选择器示例 描述
$("div:contains('open')") 选择包含文本 open的所有
元素
$("div:has(span)") 选择包含元素的所有
元素
$("div:empty") 选择没有内容的所有
元素
$("div:parent") 选择包含内容的所有
元素

层次选择器

  1. 根据DOM层次结构选择HTML元素
选择器示例 描述
$("div span") 选择祖先为
的所有元素,不要求父元素为
$("div.menu>span") 选择所有元素,其父元素为具有class=menu属性的
元素
$("label+input.textItem") 选择所有这样的元素,即紧跟元素后,与同辈,且class属性为textItem
$("#menu~div") 选择所有这样的
元素,即位于id为menu的元素后面且与它同辈

表单选择器

  1. 根据状态选择表单元素
选择器示例 描述
$("input:checked") 选择当前处于checked状态 的所有元素
$("option:checked") 选择当前处于selected状态 的所有元素
$(":focus") 选择获得焦点的表单元素
$("input:enabled") 选择处于启动状态的元素
$("input:disabled") 选择处于禁用状态的元素

可视性选择器

  1. 根据可见状态选择元素
选择器示例 描述
$("div:visible") 选择可见的
元素
$("div:hidden") 选择隐藏的
元素

筛选选择器

元素元素
选择器示例 描述
$("tr:even") 选择索引为偶数的
$("tr:odd") 选择索引为奇数的
$("div:first") 选择第一个
元素
$("div:last") 选择最后一个
元素
$(":header") 选择标题元素
$("div:eq(5)") 选择第六个
元素,索引从0开始
$("li:gt(1)") 选择除前两个
  • 元素外的其他
  • 元素
  • $("li:lt(2)") 选择前两个
  • 元素
  • $(":animated") 选择当前应用了动画效果的所有元素

    注意:

    li:lt(2)
    

    这里并不是大写的i,而是小写的L,如果写成大写的i无效

    选择器示例

    创建页面

    <!DOCTYPE html>
    <html>
    	<meta charset="utf-8" />
    <head>	
    
    <style>
    	span{
         
    		padding: 2px;
    		border: 3px solid blue;
    		color: white;
    		background-color: blue;
    		cursor: pointer;
    	}
    	
    	.label{
         
    		font-size: 24px;
    		margin: 10px;
    	}
    </style>
    
    
    </head>
    <body>
    	<span onclick="setEven()">Even</span>
    	<span onclick="setOdd()">Odd</span>
    	<span onclick="setFirst3()">First3</span>
    	<p class="label">星球</p>
    	<ul>
    		<li>水星</li>
    		<li>金星</li>
    		<li>地球</li>
    		<li>火星</li>
    		<li>木星</li>
    		<li>土星</li>
    		<li>天王星</li>
    		<li>海王星</li>
    		<li>冥王星</li>
    	</ul>
    </body>
    </html>
    

    jQuery框架_第10张图片

    应用jQuery

    <!DOCTYPE html>
    <html>
    	<meta charset="utf-8" />
    <head>	
    
    <style>
    	span{
         
    		padding: 2px;
    		border: 3px solid blue;
    		color: white;
    		background-color: blue;
    		cursor: pointer;
    	}
    	
    	.label{
         
    		font-size: 24px;
    		margin: 10px;
    	}
    </style>
    
    
    </head>
    <body>
    	<script src="jquery-3.5.1"></script>
    	<span onclick="setEven()">Even</span>
    	<span onclick="setOdd()">Odd</span>
    	<span onclick="setFirst3()">First 3</span>
    	<p class="label">星球</p>
    	<ul>
    		<li>水星</li>
    		<li>金星</li>
    		<li>地球</li>
    		<li>火星</li>
    		<li>木星</li>
    		<li>土星</li>
    		<li>天王星</li>
    		<li>海王星</li>
    		<li>冥王星</li>
    	</ul>
    	<script>
    		function setEven(){
         
    			$("li, span").css("font-weight","");
    			var $evenItems=$("li:even");
    			$evenItems.css("font-weight","bold");
    			$("span:contains('Even')").css("font-weight","bold");
    			$(".label").html("Even Clicked");
    		}
    		function setOdd(){
         
    			$("li,span").css("font-weight","");
    			var $oddItems=$("li:odd");
    			$oddItems.css("font-weight","bold");
    			$("span:contains('Odd')").css("font-weight","bold");
    			$(".label").html("Odd Clicked");
    		}
    		function setFirst3(){
         
    			$("li,span").css("font-weight","");
    			var $first3=$("li:lt(3)");
    			$first3.css("font-weight","bold");
    			$("span:contains('First 3')").css("font-weight","bold");
    			$(".label").html("First 3 Clicked");
    			
    			
    		}
    	</script>
    </body>
    </html>
    

    jQuery框架_第11张图片

    jQuery框架_第12张图片
    jQuery框架_第13张图片

    注意1

    使用jQuery的时候,一定记得加入这行代码

    <script src="jquery-3.5.1"></script>
    

    注意2

    var $first3=$("li:lt(3)");
    

    lt这里并不是大写的i,而是小写的L,如果写成大写的i无效

    设置列表项水平排列

    <!DOCTYPE html>
    <html>
    	<meta charset="utf-8" />
    <head>	
    
    <style>
    	span{
         
    		padding: 2px;
    		border: 3px solid blue;
    		color: white;
    		background-color: blue;
    		cursor: pointer;
    	}
    	
    	.label{
         
    		font-size: 24px;
    		margin: 10px;
    	}
    	
    	.horizontal{
         
    		float: left;
    		list-style-type: none;
    		margin: 10px;
    	}
    </style>
    
    
    </head>
    <body>
    	<script src="jquery-3.5.1"></script>
    	<span onclick="setEven()">Even</span>
    	<span onclick="setOdd()">Odd</span>
    	<span onclick="setFirst3()">First 3</span>
    	<span onclick="setHorizon()">Horizontal</span>
    	<p class="label">星球</p>
    	<ul>
    		<li>水星</li>
    		<li>金星</li>
    		<li>地球</li>
    		<li>火星</li>
    		<li>木星</li>
    		<li>土星</li>
    		<li>天王星</li>
    		<li>海王星</li>
    		<li>冥王星</li>
    	</ul>
    	<script>
    		function setEven(){
         
    			$("li, span").css("font-weight","");
    			var $evenItems=$("li:even");
    			$evenItems.css("font-weight","bold");
    			$("span:contains('Even')").css("font-weight","bold");
    			$(".label").html("Even Clicked");
    		}
    		function setOdd(){
         
    			$("li,span").css("font-weight","");
    			var $oddItems=$("li:odd");
    			$oddItems.css("font-weight","bold");
    			$("span:contains('Odd')").css("font-weight","bold");
    			$(".label").html("Odd Clicked");
    		}
    		function setFirst3(){
         
    			$("li,span").css("font-weight","");
    			var $first3=$("li:lt(3)");
    			$first3.css("font-weight","bold");
    			$("span:contains('First 3')").css("font-weight","bold");
    			$(".label").html("First 3 Clicked");	
    		}
    		function setHorizon(){
         
    			$("li").addClass('horizontal');
    			$('.label').html("Horizontal")
    		}
    	</script>
    </body>
    </html>
    

    jQuery框架_第14张图片

    操作jQuery对象和DOM元素

    链式操作

    1. 可以在jQuery语句中串接多项jQuery操作,其中每项操作的目标都是前一项操作返回的结果。
    $(document).ready(function(){
         
    			var $content=$("div#content");
    			var $firstP=$content.children("p:first");
    			$firstP.css("font-weight","bold");
    			var $spans=$firstP.children("span");
    			$span.css("color","red");
    		})
    

    或者

    $(document).ready(function(){
         
    			$("document").children("p:first").css("font-weight","bold").children("span").css("color","red");
    			}
    		});
    

    DOM筛选方法

    元素
    方法示例 描述
    $("div").eq(1) 选择指定索引处的元素,这里返回第二个
    元素
    $("option").filter(function(index){ return (this.value>5);}) 剔除不与筛选器匹配的元素,这里对当前集合中的每个元素执行指定的函数,仅返回value>5的元素,this指定当前迭代的DOM对象
    $("li").first() 获得第一个
  • 元素
  • $("li").last() 获得最后一个
  • 元素
  • $("div").has("p") 获得包含子元素

    元素
    $(".menu").not("span") 获得class属性为menu且不是的所有元素.not(selector or element or function(index) or index or object)
    $("tr").slice(2,5) 获得索引为2,3,4的

    DOM节点遍历方法

    方法示例 描述
    $("div").children("p") 选择父元素为
    的所有

    元素

    $("p.menu").closet("div") 选择离属性class为menu 的

    元素最近的

    祖先
    $("div").contents() 选择
    元素的所有子元素
    $("table").find("span") 选择包含在元素中的所有元素
    $("p#title").next("p") 查找id为title的

    元素,并选择下一个同辈的

    元素

    $("p:first").nextAll() 查找第一个

    元素,并选择它后面的所有同辈元素

    $("p:first").nextUntil("ul") 查找第一个

    元素,并选择它后面的所有同辈元素,直到遇到

      元素
    $("div#menu").parent() 查找id为menu的div元素,再选择其父元素
    $("p#footer").prev("p") 查找id为footer的p元素,再选择它的前一个同辈

    元素

    $(".menu").siblings("span") 查找class为menu的元素的同辈元素

    jQuery对象遍历方法

    .each()

    1. .each()方法用来迭代当前jQuery对象元素集合,对每个元素执行指定的函数
    $("p").each(function(idx){
         
    			$(this).html("this is paragraph"+idx);
    		})
    
    1. 迭代所有段落元素,并设置其内容,传入的参数idx为索引号,0表示第一个p元素,$(this)将this转换成了jQuery对象,以便调用html()方法。
    	$("span").each(function(i){
         
    			$(this).css('width','300px');
    		})
    

    如上:将所有元素的width属性都设置为300像素

    .map()

    1. .map()方法同样迭代jQuery对象包含的每个元素,和.each()方法的区别在于,.each()返回它操作的jQuery对象,而.map()返回一个新的jQuery对象,且包含每次迭代返回的值 。
    var liValues=$("li").map(function(idx){
         
    			return $(this).html();
    		}).get().join(",");
    

    每次迭代中,函数都返回

  • 元素的HTML内容,get()方法则返回jQuery对象的JavaScript数组,然后对数组调用join()方法,生成一个用逗号分隔的字符串

    <!DOCTYPE html>
    <html>
    	<meta charset="utf-8" />
    <head>	
    <style>
    	span{
         
    		display: inline-block;
    		color: white;
    		text-align: center;
    	}
    </style>
    </head>
    <body>
    	<script src="jquery-3.5.1"></script>
    	<input type="button" value="each()方法" />
    	<input type="button" value="map()方法" />
    	
    	<p>red 15</p>
    	<p>blue 30</p>
    	<p>gray  20</p>
    	<p>black 40</p>
    	<p>yellow 15</p>
    	<p>green 35</p>
    	<div></div>
    	<script>
    		$(document).ready(function(){
         
    			$("input:eq(0)").click(function(){
         
    			$("p").each(function(){
         
    				var parts=$(this).html().split(" ");
    				$(this).css({
         "font-size":parts[1]+"px","color":parts[0]});
    			});
    			});
    			
    			$("input:eq(1)").click(function(){
         
    			var items=$("p").map(function(){
         
    				var parts=$(this).html().split(" ");
    				return {
         color:parts[0], size:parts[1]};
    			}).get();
    			for(var idx in items){
         
    				var item=items[idx];
    				var span=$("" + item.color + "");
    				var size=item.size * 5;
    				console.log(span);
    				span.css({
         "background-color":item.color,"font-size":item.size+"px",
    				"width":size,"height":size});
    				$("div").append(span);
    			}
    			});
    		});
    	</script>
    </body>
    </html>
    

    jQuery框架_第15张图片
    jQuery框架_第16张图片

    注意:

    下面这个是实现了第一个input:

    $("input:eq(0)").click(function(){
         
    			$("p").each(function(){
         
    				var parts=$(this).html().split(" ");
    				$(this).css({
         "font-size":parts[1]+"px","color":parts[0]});
    			});
    			});
    

    下面这个是实现了第二个input:

    $("input:eq(1)").click(function(){
         
    			var items=$("p").map(function(){
         
    				var parts=$(this).html().split(" ");
    				return {
         color:parts[0], size:parts[1]};
    			}).get();
    			for(var idx in items){
         
    				var item=items[idx];
    				var span=$("" + item.color + "");
    				var size=item.size * 5;
    				console.log(span);
    				span.css({
         "background-color":item.color,"font-size":item.size+"px",
    				"width":size,"height":size});
    				$("div").append(span);
    			}
    			});
    

    不要遗漏这个标签:

    <div></div>
    

    否则下方这行代码无效:

    $("div").append(span);
    

    也就不会显示出来喽

    jQuery中的事件

    jQuery初始化代码

    1. 可在两个不同的时间触发并初始化代码:DOM准备就绪和网页资源加载完毕。

    DOM准备就绪

    1. DOM准备就绪:表示网页中DOM对象都已创建好,网页已显示,但网页资源(如图像)可能还未下载完毕
    		$(document).ready(function(){
         
    			//初始化代码;
    });
    

    网页资源加载完毕

    1. 网页资源加载完毕:如果执行初始化代码时需要使用资源信息,就需要这种方式
    	$(document).load(function(){
         
    			//初始化代码;
    });
    

    .on()方法

    on()方法将事件处理程序关联到jQuery对象,off()方法删除关联到jQuery对象上的事件处理程序

    <!DOCTYPE html>
    <html>
    	<meta charset="utf-8" />
    <head>	
    <style>
    	div{
         
    		background-color: #CCCCCC;
    		font-weight: bold;
    		display:inline-block;
    		margin: 3px;
    		padding: 5px;
    		
    	}
    </style>
    </head>
    <body>
    	<script src="jquery-3.5.1"></script>
    	<div id="div1">Say Yes</div>
    	<div id="div2">Say No</div>
    	<h1 id="heading"></h1>
    	
    	<script>
    		function clickHandler(e){
         
    			$("#"+e.data.objId).html(e.target.id+" says "+e.data.answer+" at X position: " + e.screenX);
    		}
    		
    		$(document).ready(function(){
         
    		$("#div1").on({
         "click":clickHandler},{
         "objId":"heading","answer":"yes"});
    		$(document).on("click","#div2",{
         "objId":"heading","answer":"no"},clickHandler);
    		});
    	</script>
    </body>
    </html>
    

    jQuery框架_第17张图片
    jQuery框架_第18张图片

    使用jQuery手工触发事件

    1. 与JS一样,jQuery对象也有很多时间类型对应的方法,可以直接调用,大多数元素都有click()方法,表单元素还有blur(),foucus()等方法。例如:触发所有元素的click事件 $("span").click();
    2. jQuery还提供trigger()方法,用于在触发事件的同时指定事件对象的值
    //对class属性为checkbox的所有元素触发click事件
    $(".checkbox").trigger("click");
    
    //传入简单的事件对象,事件类型设置为keypress,charCode属性设置为13,即回车键
    $("input.bigText").trigger({
         'type':'keypress','charCode':13});
    
    <!DOCTYPE html>
    <html>
    	<meta charset="utf-8" />
    <head>	
    <style>
    	span{
         
    		margin: 3px; padding: 5px;
    		background-color:#c0c0c0;
    		border:3px ridge;
    		display:inline-block;
    		cursor: pointer;
    		
    	}
    </style>
    </head>
    <body>
    	<script src="jquery-3.5.1"></script>
    	
    	
    	<p>Price:</p>
    	<input type="text" />
    	<span>&#x24;</span>
    	<span>&#xa5;</span>
    	<script>
    		function inputHandler(e){
         
    			var chr=String.fromCharCode(e.charCode);
    			$("p").append(chr);
    		}
    		
    		function spanHandler(e){
         
    			var chrCode=e.target.innerHTML.charCodeAt(0);
    			$("input").trigger({
         'type':'keypress','charCode':chrCode});
    		}
    
    		$(document).ready(function(){
         
    		$("input").keypress(function(e){
         inputHandler(e)});
    		$("span").click(function(e){
         spanHandler(e)});
    		});
    	</script>
    </body>
    </html>
    

    jQuery框架_第19张图片

    你可能感兴趣的:(Web前端技术)