mio4 Java Web & Web Security

前端基础(4):jQuery

2018-09-16
mio4

阅读:


(一)jQuery

需要掌握:1. 查询jQuery API 2. 使用Chrome自带的报错以及JS断点调试功能

(1)基础用法

(1)定义

  • 在已经掌握了Javascript动态网页技术之后为什么要使用jQuery?
    • 因为在jQuery中封装了很多预定义的对象和实用函数,使用起来很方便,并且jQuery兼容各大浏览器
  • jQuery定义
    • jQuery是Javascript的一个轻量级类库,兼容CSS3
  • 版本
    • 开发版本和上线版本
  • 导入jQuery库
    • <script src="../js/jquery-1.11.0.min.js"></script> //使用单独的一行script标签
  • 获取一个jQuery对象
    • 使用$(”选择器”),有两种方式:
    • var $user = $("#username");
    • var $user = jQuery("#username");

(2)jQuery和DOM对象转换

  • DOM对象转jQuery对象
		<script>
			var obj = document.getElementById("username");
			var $user = $(obj);
			alert($user.val());
		</script>
  • jQuery对象转DOM对象
		//1.获取jQuery对象
		var $u = $("#username");
		//2.转换为DOM对象
		var obj = $u.get(0);

(3)页面加载

如何在页面启动时就立即执行script区域内的代码?有JavaScript原生方式和jQuery方式

  • JS加载页面
		onload=function(){
			//code
		}
  • jQuery加载页面
    • JS只能onload一次,jQuery能够多次加载页面
		//方式一
		$(function(){
			//code
		})		

		//方式二
        window.onload = function(){
            alert("something");
        }
		//方式三
        $(document).ready(function(){
            alert("something~");
        })

(4)派发事件

  • $(“选择器”).click(function(){code})
    • 点击Button触发alert
		$(function(){
			$("#bId").click(function(){
				alert("you click the button");
			});
		});	

(5)图片隐藏和展示

  • 这种方法在网页弹窗中比较有用
  • 网页中图片隐藏和展示的三种实例方法:
    • .toggle()
    • .slidetoggle() 滑入/滑出
    • .fadeOut() 淡入/淡出
		$(function(){
			$("#b1").click(function(){
				//$("#b1Div").hide(1000);
				$("#b1Div").toggle();
			});
		});

(2)Demo练习

(1)弹出广告

  • 模拟网站中弹出广告,一段时间后消失的行为
  • 实现分析
    • 计时器setTimeout(x ms);
    • slideDown()和slideUp()方法
		<script>
			$(function(){
				//开始一个定时器 2s之后展示
				setTimeout(showAd,2000);
			});
			
			function showAd(){
				//获取div
				$("#ad").slideDown(); //slide能产生广告滑入和滑出的效果
				//开启另一个定时器:作用是隐藏元素
				setTimeout(hideAd,3000);
			}
			
			function hideAd(){
				$("#ad").slideUp(); 
			}
		</script>

(2)jQuery下的id选择器

  • 作用:鼠标单击btn1导致id=”one”的背景色发生改变
			$(function(){
				$("#btn1").click(function(){
					$("#one").css("background-color","aqua");
				});
			});

(3)jQuery下的层次选择器

  • 层次选择器是按照一定的层次进行选择(废话),比如先定位在body标签内,然后再定位所有的div标签
  • jQuery下的层次选择器的用法就很有意思,多出了几个需要注意的符号
    • a b :a的所有b后代
    • a>b :a的所有b孩子
    • a+b :a的下一个a类型节点
    • a~b :a以后的所有a类型节点(不包括a)
  • 实践:对于body标签下的所有div标签,鼠标单击按钮之后改变其颜色
		<script>
			$(function(){
				$("#btn1").click(function(){
					$("body div").css("background-color","#BCD68D");
				});				
			})
		</script>

(4)jQuery下的过滤选择器

  • 过滤选择器是什么
    • Javascript根据某一规则对进行元素的匹配
    • 比如获取body标签内的第一个div元素
  • 实践:选择第一个div元素
		<script>
			$(function(){
				$("#btn1").click(function(){
					$("div:first").css("background-color","brown");
				});
			});
		</script>
  • 其他典型过滤选择器:
    • div:first
    • div:last
    • div:odd 所有奇数div
    • div:even 所有偶数div
    • div:eq(n) 第n个div元素
    • div:gt(n) 所有索引大于n的div元素
    • div:lt(n) 所有索引小于n的div元素

(5)jQuery下的属性选择器

  • 实践:选中所有含有title属性的div标签,然后改变其背景色
		<script>
			$(function(){
				$("#btn1").click(function(){
					$("div[title]").css("background-color","#BCD68D");
				});
			});
		</script>
  • 实践:选中所有含有title属性并且值为test的标签,然后改变其背景色
		<script>
			$(function(){
				$("#btn2").click(function(){
					$("div[title='test']").css("background-color","aquamarine");
				});
			});
		</script>

(6)jQuery实现表单隔行换色

  • 对比发现:jQuery很多时候能够使用更少的代码实现更多的功能
		$(function(){
			$("tr:odd").css("background-color","aqua");
			$("tr:even").css("background-color","burlywood");
		});

(7)复选框全选

  • prop和attr功能一样,表示设置对应的属性(attr无法获取checked属性)
    • itemSelect是class属性,使用class选择器
    • this传递的是参数的dom对象
	$(".itemSelect").prop("checked",$(this).prop("checked"));

(8)省市联动

  • 在复选框中选中省之后后面的选项中是对应的市区集合选择(比如注册或者购买火车票的时候)
    • 遍历数组使用each关键词
    • append()方法向元素追加内容
	<script type="text/javascript">
	 	$(function(){
	 		$("[name='pro']").change(function(){
	 			//获取市下拉选
	 			var $city=$("[name='city']");
	 			//初始化
	 			$city.html($("<option>").html("-请选择-"));
	 			
	 			var pro=$(this).val();
	 			//获取所有的市数组
	 			var cities=$(arr[pro]);
	 			
	 			//遍历数组,拼装成option 追加到市下拉选中
	 			cities.each(function(){
	 				$city.append("<option>"+this+"</option>");
	 			});
	 		});
	 	});
	</script>

(3)jQuery下的属性和CSS

  • 可以通过jQuery改变元素的属性或者给元素添加CSS样式

(1)属性

  • $变量.attr(“属性名”, “值”) // 设置对应值
		//1. 给username赋予title属性
		var $username = $("[name='username']");
		$username.attr("title","mio");

		//2.给username添加value和class属性
		$username.attr({
			"value":"mio",
			"class":"textClass"
		});

		//3.删除username的class属性
		$username.removeAttr("class");

(2)CSS

  • $变量.css(“属性名”,”设置的值”);
		//给div添加边框样式
		var $div1 = $("div");
		$div1.css("border","1px solid red");
		
		//给div添加多个样式
		$div1.css({
			"width":"100%",
			"background-color":"#ff0"
		});
  • html操作
    • java $("p").html("Hello <b>world</b>!"); 设置所有p标签内的内容
    • .html()无参数时表示返回值,有参数时表示设置对应的值
  • text操作
    • 和html操作不同的是text以纯文本的形式来解释参数,而html中以解释html代码的形式改变样式

(4)jQuery事件

  • ready()方法:表示文档加载后激活的函数:
		$(document).ready(function(){
			//code
		});

Comments

Content