jQuery案例

文章内容输出来源:拉勾教育JAVA就业训练营
总目录跳转链接:总目录
如有侵权请联系本人
邮箱:xiaogueika@tom.com

jQuery官网:http://jQuery.com

一、选择器

1. 基本选择器

基本选择器包括标签选择器、类选择器、ID选择器、并集选择器、交集选择器和全局选择器

名称语法构成描述示例
标签选择器element根据给定的标签名匹配元素$("h2" )选取所有h2元素
类选择器.class根据给定的class匹配元素$(" .title")选取所有class为title的元素
ID选择器#id根据给定的id匹配元素$(" #title")选取id为title的元素
并集选择器selector1,selector2,…,selectorN将每一个选择器匹配的元素合并后一起返回$("div,p,.title" )选取所有div、p和拥有class为title的元素
交集选择器element.class或element#id匹配指定class或id的某元素或元素集合$("h2.title")选取所有拥有class为title的h2元素
<body>
	<p>中国</p>
	<p>武汉</p>
	<p class="jy">加油</p>
	<p id="wan">祖国万岁</p>
	<h3 class="jy">祖国万岁</h3>
</body>
<script>
	//$("p").css("color","red");// 标签选择器,获得所有的p
	//$(".jy").css("color","blue");//类选择器
	//$("#wan").css("color","#000");//ID选择器,更具备唯一性
	//$(".jy,#wan").css("color","pink");// 并集选择器,.jy和#wan
	//$("h3.jy").css("color","yellow");// 交集选择器,既是h3标签,又拥有.jy的元素
</script>

2. 层次选择器

名称语法构成描述示例
后代选择器ancestor
descendant
选取ancestor元素里的所有
descendant(后代)元素
$("#menu span" )选取
#menu下的元素
子选择器parent>child选取parent元素下的child(子)元素$(" #menu>span" )选取
#menu的子元素
相邻元素选择器prev+next选取紧邻prev元素之后的next元素$(" h2+dl " )选取紧邻元素之后的同辈元素
同辈元素选择器prev~sibings选取prev元素之后的所有siblings元素$(" h2~dl " )选取元素之后所有的同辈元素
<body>
    <h3>000</h3>
    <div id="x">
        111
        <p>p1</p>
        <div>
            <p>p2</p>
        </div>
    </div>
    <h3>222</h3>
    <h3>333</h3>
</body>
<script>
	//$("#x p").css("color","red"); // 后代选择器,忽略层级
	//$("#x>p").css("color","red"); // 子代选择器,只负责子级
	//$("#x+h3").css("color","red"); // 相邻元素选择器,下一个紧邻的兄弟h3
	//$("#x~h3").css("color","red"); // 同辈元素选择器,下面的所有兄弟h3
</script>

3. 属性选择器

语法构成描述示例
[attribute]选取包含给定属性的元素$(" [href]" )选取含有href属性的元素
[attribute=value]选取等于给定属性是某个特定值的元素$(" [href ='#']" )选取href属性值为“#”的元素
[attribute !=value]选取不等于给定属性是某个特定值的元素$(" [href !='#']" )选取href属性值不为“#”的元素
[attribute^=value]选取给定属性是以某些特定值开始的元素$(" [href^='en']" )选取href属性值以en开头的元素
[attribute$=value]选取给定属性是以某些特定值结尾的元素$(" [href$='.jpg']" )选取href属性值以.jpg结尾的元素
[attribute*=value]选取给定属性是以包含某些值的元素$(" [href* ='txt']")选取href属性值中含有txt的元素
[s1] [s2] [sN]选取满足多个条件的复合属性的元素$("li[id][title=新闻]" )选取含有id和title属性为新闻的<li>元素
<body>
    <a href="www.lagou.com">拉勾网</a>
    <a href="www.sina.com.cn">新浪网</a>
    <a href="http://www.163.com">网易</a>
    <p href="x">哈哈1</p>
    <p href="x" title="x">哈哈2</p>
</body>
<script>
	//$("[href]").css("color","red"); // 选取拥有href属性的元素
	//$("[href='x']").css("color","red"); // 选取拥有href=x的元素
	//$("a[href!='x']").css("color","red"); // 选取a标签中href不等于x的元素
	//$("[href^='www']").css("color","red"); // 选取href属性以www开头的元素
	//$("[href$='com']").css("color","red"); // 选取href属性以com结尾的元素
	//$("[href*='a']").css("color","red"); // 选取href属性包含a的元素
	//$("p[href][title='x']").css("color","red"); // 选取拥有href属性和title属性,并且title=x的p元素
</script>

4. 过滤选择器

语法构成描述示例
:first选取第一个元素$(" li:first" )选取所有
:last选取最后一个元素$(" li:last" )选取所有
:even选取索引是偶数的所有元素(index从0开始)$(" li:even" )选取索引是偶数的所有
:odd选取索引是奇数的所有元素(index从0开始)$(" li:odd" )选取索引是奇数的所有
:eq(index)选取索引等于index的元素(index从0开始)$(“li:eq(1)” )选取索引等于1的
:gt(index)选取索引大于index的元素(index从0开始)$(" li:gt(1)" )选取索引大于1的
:lt(index)选取索引小于index的元素(index从0开始)$(“li:lt(1)” )选取索引小于1的
not(节点)选取选中的节点外的所有元素$(“li”).not( $(this).siblings() )除了他自己所有li节点
<body>
	<h2 id="h2#x">修仙小说</h2>
	<ul>
		<li>凡人修仙传</li>
		<li>遮天</li>
		<li>神墓</li>
		<li>残袍</li>
		<li>大主宰</li>
	</ul>
</body>
<script>
	//$("li:first").css("color","red"); // 第一个li
	//$("li:last").css("color","red"); // 最后一个li
	//$("li:even").css("color","red"); // 偶数行的li
	//$("li:odd").css("color","red"); // 奇数行的li
	//$("li:eq(2)").css("color","red"); // 下标为2的li
	//$("li:gt(1)").css("color","red"); // 下标大于1的li
	//$("li:lt(2)").css("color","red"); // 下标小于2的li
	//$("#h2\\#x").css("color","red"); // 使用转义符
</script>

二、事件

1. 鼠标事件

鼠标事件是当用户在文档上移动或单击鼠标时而产生的事件,常用鼠标事件有:

方法描述执行时机
click( )触发或将函数绑定到指定元素的click事件单击鼠标时
mouseover( )触发或将函数绑定到指定元素的mouse over事件鼠标移过时
mouseout( )触发或将函数绑定到指定元素的mouse out事件鼠标移出时
<body>
	<img src="img/1.jpg" width="300">
	<img src="img/1.jpg" width="300">
	<img src="img/1.jpg" width="300">
</body>
<script>
	$("img").click( function(){
	//点击一下,换照片
		$(this).attr( "src","img/2.jpg" ); //this就是事件触发的源头
	} );
	$("img").mouseover( function(){ //移动到元素上
		$(this).css( "border","2px solid red" );
	} );
	$("img").mouseout( function(){ //离开元素
		$(this).css( "border","2px solid white" );
	} );
</script>

2. 键盘事件

方法描述执行时机
keydown( )触发或将函数绑定到指定元素的keydown事件按下键盘时
keyup( )触发或将函数绑定到指定元素的keyup事件释放按键时
<body>
	<input>
	<h3></h3>
</body>
<script>
	$("input").keyup( function(){
		var str = $(this).val(); // 获取框中的值
		$("h3").text( str ); // 将h3元素中的文本内容更改为str
	} );
</script>

3. 表单事件

方法描述执行时机
focus( )触发或将函数绑定到指定元素的focus事件获得焦点
blur( )触发或将函数绑定到指定元素的blur事件失去焦点
<body>
    <form action="">
        <p>帐号: <input id="a" value="请输入帐号..."> </p>
        <p>电话: <input id="b"> </p>
    </form>
</body>
<script>
        //获得焦点(激活/点击一下)
        $("#a").focus(function(){
            $(this).val("");
        });

        //失去焦点(未激活/未点击)
        $("#a").blur(function(){
            $(this).val("请输入帐号...");
        });
</script>

4. 鼠标悬停复合事件

hover()方法相当于mouseover(鼠标移过)与mouseout(鼠标移出)事件的组合

<body>
	<img src="img/3.jpg" width="400">
</body>
<script>
	$("img").hover(
		function(){
			$(this).css("border","5px solid red");
		},
		function(){
			$(this).css("border","5px solid white");
		}
	);
</script>

5. 连续点击复合事件

toggle()除了可以模拟鼠标的连续单击事件

<body>
	<h2>修仙小说</h2>
	<ul>
		<li>凡人修仙传</li>
		<li>遮天</li>
		<li>神墓</li>
		<li>残袍</li>
		<li>大主宰</li>
	</ul>
</body>
<script>
	$("h2").click(function(){
		$("ul").toggle(); // 连续点击,ul的可见和隐藏进行切换
	});
</script>

6. 事件的动态绑定

对dom元素绑定事件的另一种写法

<body>
	<h2>点我试试</h2>
</body>
<script>
	//可以绑定多种类型的事件
	$("h2").on("click mouseover",function(){
		alert("点我或移动上来");
	});
</script>

三、元素的隐藏和显示

ps:可选的 speed 参数规定隐藏/显示的速度,可以取以下值:“slow”、“fast” 或毫秒

1. 改变元素的宽和高(带动画效果)

  • show( speed ):显示
  • hide( speed ):隐藏
  • toggle( speed )等价于show+hide : 显示的隐藏,隐藏的显示
<style>
	div{
		width: 200px;
		height: 200px;
		background-color: black;
	}
</style>
<body>
	<button id="btn1">显示</button>
	<button id="btn2">隐藏</button>
	<button id="btn3">切换</button>
	<div></div>
</body>
<script>
	$("#btn2").click(function(){
		//fast:快速的
		//slow:缓慢的
		//毫秒:自定义
		$("div").hide('fast');
	});
	$("#btn1").click(function(){
		$("div").show('slow');
	});
	$("#btn3").click(function(){
		$("div").toggle(1000);
	});
</script>

2. 改变元素的高(拉伸效果)

  • slideDown( speed ) :显示
  • slideUp( speed ):隐藏
  • slideToggle( speed )等价于slideDown+slideUp
<style>
	div{
		width: 200px;
		height: 200px;
		background-color: black;
	}
</style>
<body>
    <button id="btn1">显示</button>
    <button id="btn2">隐藏</button>
    <button id="btn3">切换</button>
    <div></div>
</body>
<script>
	$("#btn2").click(function(){
		$("div").slideUp(1000); //向上收缩
	});
	$("#btn1").click(function(){
		$("div").slideDown(1000); //向下伸展
	});
	$("#btn3").click(function(){
		$("div").slideToggle(1000); //切换
	});
</script>

3. 不改变元素的大小(淡入淡出效果)

  • fadeIn( speed ) 显示
  • fadeOut( speed ) 隐藏
  • fadeToggle( speed ) 等价于fadeIn+fadeOut动画
  • fadeTo( speed , 透明度 ) 方法允许渐变为给定的不透明度(值介于 0 与 1 之间)
<style>
	div{
		width: 200px;
		height: 200px;
		background-color: black;
	}
</style>
<body>
    <button id="btn1">显示</button>
    <button id="btn2">隐藏</button>
    <button id="btn3">切换</button>
    <button id="btn4">透明</button>
    <div></div>
</body>
<script>
	$("#btn2").click(function(){
		$("div").fadeOut(1000); // 隐藏:淡出我的视线
	});
	$("#btn1").click(function(){
		$("div").fadeIn(1000); // 显示:映入眼帘
	});
	$("#btn3").click(function(){
		$("div").fadeToggle(1000); // 切换
	});
	$("#btn4").click(function(){
		$("div").fadeTo(1000,0.5); // 1秒内变成50%的透明度
	});
</script>

4. 链(多个动作/方法连接在一起)

链是允许我们在同一个元素上在一条语句中运行多个jQuery方法,可以把动作/方法链接在一起 ;

点击一次按钮,让div完成4个指定动作: 背景变粉 --> 字体变绿-->收缩 -->拉伸

<style>
	div{
		width: 200px;
		height: 200px;
		background-color: black;
		color:white;
		font-size: 3em;
	}
</style>
<body>
	<button>试试</button>
	<div>hello</div>
</body>
<script>
	$("button").click(function(){
		$("div").css("background-color","pink")	//背景变粉
				.css("color","green")			//字体变绿
				.slideUp(1000)					//收缩
				.slideDown(1000);				//拉伸
	});
</script>

四、DOM和CSS的操作

1. 属性函数

  • attr( “属性” ); 获得元素的属性值
  • attr( “属性” , “新值” ); 修改元素的属性值
<body>
    <button id="btn1">点我试试</button>
    <hr>
    <img src="img/1.jpg" title="美女大图" width="300">
</body>
    <script src="js/jquery-3.4.1.min.js"></script>
<script>
	$("#btn1").click(function(){
		console.log($("img").attr("src"));	//attr( "属性" ); 获得元素的属性值
		$("img").attr("src","img/2.jpg");	//attr( "属性" , "新值" ); 修改元素的属性值
		$("img").attr("title","高清无码");
		$("img").attr( {width:"200",height:"200"} ); //用json语法修改多个属性值
	});
</script>
  • val() ; 获得表单元素中的value值
  • val(“x”) 修改表单元素中的value值
  • html(); 获得元素中的内容(标签+文本)
  • html(“x”) 修改元素中的内容(标签+文本)
  • text(); 获得元素中的文本
  • text(“x”) 修改元素中的文本
<body>
	<button>试试</button>
	<hr>
	<input id="username">
	<div>
		<h1><i>中国加油!</i></h1>
	</div>
</body>
<script>
	$("button").click(function(){
		//alert($("input").val()); //获得input框中的值
		//$("input").val("哈哈哈"); //修改input框中的值
		//alert( $("div").html() ); //获得div中的内容(包含标签信息)
		//alert( $("div").text() ); //获得div中的内容(不包含标签信息,只包含文本内容)
		//$("div").text("祖国万岁!"); //修改div中的内容(全部内容都覆盖)
	});
</script>

2. 样式函数

  • css( “属性”); 获得该属性值
  • css( “属性”,“值”); 设置属性的值
  • css( { json} ); 设置多个属性的值
  • width(); 获得元素的宽度
  • width( number ); 修改元素的宽度
  • height(); 获得元素的高度
  • height( number ); 修改元素的高度
<!-- CSS -->
<style>
	div{
		width: 150px;
		height: 150px;
		background-color: #000;
	}
</style>
<body>
	<button>试试</button>
	<hr>
	<div></div>
</body>
<script>
	$("button").click(function(){
		//var w = $("div").css("width"); // 获取css属性,width的值
		
		//1.一个键值对
		//$("div").css("background-color","pink");
		
		//2.链式编程
	    //$("div").css("background-color","pink").css("border-radius","50%");
	
	    //3.json为参数
	    $("div").css({
			opacity:"0.4",
			background:"orange",
			borderRadius:"50%"
		} );
	});
</script>
<!-- width、height-->
<style>
	div{
		width: 150px;
		height: 150px;
		background-color: #000;
	}
</style>
<body>
	<button>试试</button>
	<hr>
	<div></div>
</body>
<script>
	$("button").click(function(){
		var w = $("div").width(); // (无参)获取宽度
        var h = $("div").height();// (无参)获取高度
		console.log("宽:"+w+"px,高:"+h+"px");
        $("div").width("300"); // (传参)修改宽度
        $("div").height("300"); //(传参)修改高度
	});
</script>

3. 类样式函数(换样式)

  • addClass(); 为元素添加类样式
  • removeClass(); 将元素的类样式移除
  • toggleClass(); 样式的切换(有=>无,无=>有)
<style>
	div{
		width: 100px;
		height: 100px;
		background-color: #000;
	}
	.a{
		background: palevioletred;
		border-radius: 50%;
	}
	.b{
		border:5px dashed darkcyan;
		opacity: 0.6;
	}
	.cn{
		background: #000;
		color:#FFF;
		font-family: 字魂49号-逍遥行书;
	}
</style>
<body>
	<button id="btn1">试试</button>
	<button id="btn2">取消透明度</button>
	<button id="btn3">样式切换</button>
	<hr>
	<div></div>
	<h1>中华人民共和国,万岁!</h1>
</body>
<script>
	$("#btn1").click(function(){
		// $("div").addClass("a");
		$("div").addClass("a b");
	});
	$("#btn2").click(function(){
		$("div").removeClass("b");
	});
	$("#btn3").click(function(){
		$("h1").toggleClass("cn");
	});
</script>

4. 节点操作

  • 创建节点
    工厂函数$()用于获取或创建节点

  • 插入节点
    插入子节点

    语法功能
    append(content)$(A).append(B)表示将B追加到A中,
    如:$("ul").append($newNode1);
    appendTo(content)$(A).appendTo(B)表示把A追加到B中,
    如:$newNode1.appendTo("ul");
    prepend(content)$(A).prepend(B)表示将B前置插入到A中,
    如:$("ul"). prepend($newNode1);
    prependTo(content)$(A).prependTo(B)表示将A前置插入到B中,
    如:$newNode1.prependTo("ul");

    插入同辈节点

    语法功能
    after(content)$(A).after(B)表示将B插入到A之后,
    如:$("ul").after($newNode1);
    insertAfter(content)$(A). insertAfter(B)表示将A插入到B之后,如:$newNode1.insertAfter("ul");
    before(content)$(A). before(B)表示将B插入至A之前,如:$("ul").before($newNode1);
    insertBefore(content)$(A). insertBefore(B)表示将A插入到B之前,如$newNode1.insertBefore("ul");
  • 替换节点
    节点.replaceWith(“更换内容”)
    “更换内容”.replaceAll(节点)

  • 复制节点
    clone()

  • 删除节点
    remove()删除整个节点
    empty()清空节点内容

五、遍历节点

看菜鸟吧!!!!太多了!!!!
https://www.runoob.com/jquery/jquery-traversing.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值