一步一步学习 JQuery (六) JQuery 的 html() & val() && CSS_DOM操作

设置和获取 HTML, 文本和值

读取和设置某个元素中的 HTML 内容: html() . 该方法可以用于 XHTML, 但不能用于 XML 文档
读取和设置某个元素中的文本内容: text(). 该方法既可以用于 XHTML 也可以用于 XML 文档.
读取和设置某个元素中的值: val() --- 该方法类似 JavaScript 中的 value 属性. 对于文本框, 下拉列表框, 单选框该方法可返回元素的值(多选框只能返回第一个值).如果为多选下拉列表框, 则返回一个包含所有选择值的数组

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<script type="text/javascript" src="jquery-1.9.1.js"></script>
		<script type="text/javascript">
			//测试使用 html() 方法. 
			$(function(){
				
				alert($("#city").html());
				
				$("#city").html("<li id='at'>wwww</li>");
			})
		</script>
	</head>
	<body>
		<p>你喜欢哪个城市?</p>
		<ul id="city">
			<li id="bj" name="BeiJing">北京</li>
			<li>上海</li>
			<li id="dj">东京</li>
			<li id="se">首尔</li>
		</ul>
		
		<br><br>
		<p>你喜欢哪款单机游戏?</p>
		<ul id="game">
			<li id="rl">红警</li>
			<li>实况</li>
			<li>极品飞车</li>
			<li>魔兽</li>
		</ul>
		
		<br><br>
		<p>你喜欢哪种开发语言?</p>
		<ul id="language">
			<li>C</li>
			<li>Java</li>
			<li>.NET</li>
			<li>PHP</li>
		</ul>
		
		<br><br>
		gender: 
			<input type="radio" name="gender" value="male"/>Male
			<input type="radio" name="gender" value="female"/>Female
	
		<br><br>
		name: <input type="text" name="username" value="at"/>
	</body>
</html>	
使用val() 方法 

技术分享

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<script type="text/javascript" src="jquery-1.9.1.js"></script>
		<script type="text/javascript">
		
			$(function(){
				//1. 为 #address 添加 focus(获取焦点), blur(失去焦点) 响应函数
				$(":text").focus(function(){
					//2. 当获取焦点时, 若 #address 中是默认值
					//(defaultValue 属性, 该属性是 DOM 对象的属性), 就使其值置为 ""
					var val = $(this).val();
					
					if(val == this.defaultValue){
						$(this).val("");
					}
				}).blur(function(){
					//3. 失去焦点时, 若 #address 的值在去除前后空格后等于 ""
					//则为其恢复默认值. 
					var val = this.value;	
					if($.trim(val) == ""){
						this.value = this.defaultValue;
					}
				});
				
				//2. 
				$(":button:eq(1)").click(function(){
					$("#single").val("选择3号");
				});
				
				$(":button:eq(2)").click(function(){
					$("#multiple").val(["选择2号", "选择4号"]);				
				});
								
				$(":button:eq(3)").click(function(){
					$(":checkbox[name='c']").val(["check2", "check4"]);
				});
				
				$(":button:eq(4)").click(function(){
					//即便是为一组 radio 赋值, val 参数中也应该使用数组. 
					//使用一个值不起作用。 
					$(":radio[name='r']").val(["radio2"]);
				});
				
				$(":button:eq(5)").click(function(){
					//val() 可以直接获取 select 的被选择的值. 
					alert($("#single").val());
					alert($("#multiple").val());
					
					//val 不能直接获取 checkbox 被选择的值
					//若直接获取, 只能得到第一个被选择的值. 
					//因为 $(":checkbox[name='c']:checked") 得到的是一个
					//数组. 而使用 val() 方法只能获取数组元素的第一个值
					//若希望打印被选择的所有制, 需要使用 each 遍历. 
					//alert($(":checkbox[name='c']:checked").val());
					$(":checkbox[name='c']:checked").each(function(){
						alert(this.value);
					});
					
					//而 raido 被选择的只有一个, 所以可以直接使用 val() 方法. 
					alert($(":radio[name='r']:checked").val());
				});	
			})
		</script>
	</head>
	<body>
		<input type="text" id="address" value="请输入邮箱地址"><br>
		<input type="text" id="password" value="请输入邮箱密码"><br>
		<input type="button" value="登录"><br><br><br>
		
		<input type="button" value="使单选下拉框的'选择3号'被选中"/>
		<input type="button" value="使多选下拉框选中的'选择2号'和'选择4号'被选中"/><br>
		<input type="button" value="使多选框的'多选2'和'多选4'被选中"/>
		<input type="button" value="使单选框的'单选2'被选中"/><br>
		<input type="button" value="打印已经被选中的值"><br><br/>
		
		<select id="single">
		  <option>选择1号</option>
		  <option>选择2号</option>
		  <option>选择3号</option>
		</select>
		
		<select id="multiple" multiple="multiple" style="height:120px;">
		  <option selected="selected">选择1号</option>
		  <option>选择2号</option>
		  <option>选择3号</option>
		  <option>选择4号</option>
		  <option selected="selected">选择5号</option>
		</select><br/><br/>
		
		<input type="checkbox" name="c" value="check1"/> 多选1
		<input type="checkbox" name="c" value="check2"/> 多选2
		<input type="checkbox" name="c" value="check3"/> 多选3
		<input type="checkbox" name="c" value="check4"/> 多选4
		<br/>
		<input type="radio" name="r" value="radio1"/> 单选1
		<input type="radio" name="r"  value="radio2"/> 单选2
		<input type="radio" name="r"  value="radio3"/> 单选3
	</body>
</html>

常用的遍历节点方法

取得匹配元素的所有子元素组成的集合: children(). 该方法只考虑子元素而不考虑任何后代元素.
取得匹配元素后面紧邻的同辈元素的集合(但集合中只有一个元素): next()
取得匹配元素前面紧邻的同辈元素的集合(但集合中只有一个元素): prev()
取得匹配元素前后所有的同辈元素: siblings()

样式操作

获取 class 和设置 class : class 是元素的一个属性, 所以获取 class 和设置 class 都可以使用 attr() 方法来完成.
追加样式: addClass() 
移除样式: removeClass() --- 从匹配的元素中删除全部或指定的 class
切换样式: toggleClass()  --- 控制样式上的重复切换.如果类名存在则删除它, 如果类名不存在则添加它.
判断是否含有某个样式: hasClass() --- 判断元素中是否含有某个 class, 如果有, 则返回 true; 否则返回 false

CSS-DOM 操作

获取和设置元素的样式属性: css()
获取和设置元素透明度: opacity 属性
获取和设置元素高度, 宽度: height(), width(). 在设置值时, 若只传递数字, 则默认单位是 px. 如需要使用其他单位则需传递一个字符串, 例如 $(“p:first”).height(“2em”);
获取元素在当前视窗中的相对位移: offset(). 其返回对象包含了两个属性: top, left. 该方法只对可见元素有效

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title></title>
		<style type="text/css">
			*{ margin:0; padding:0;}
			body {font-size:12px;text-align:center;}
			a { color:#04D; text-decoration:none;}
			a:hover { color:#F50; text-decoration:underline;}
			.SubCategoryBox {width:600px; margin:0 auto; text-align:center;margin-top:40px;}
			.SubCategoryBox ul { list-style:none;}
			.SubCategoryBox ul li { display:block; float:left; width:200px; line-height:20px;}
			.showmore { clear:both; text-align:center;padding-top:10px;}
			.showmore a { display:block; width:120px; margin:0 auto; line-height:24px; border:1px solid #AAA;}
			
			.showmore a span { padding-left:15px; background:url(img/down.gif) no-repeat 0 0;}
			
			.promoted a { color:#F50;}
		</style>
		<script type="text/javascript" src="scripts/jquery-1.3.1.js"></script>
		<script type="text/javascript">
			$(function(){
				//测试JQery 样式相关的方法
				//1.hasClass(): 某元素是否有指定的样式
				
				alert("div 是否有 SubCategoryBox CSS样式 : "+$("div:first").hasClass("SubCategoryBox"));
				
				//2.移除样式
				
				$("div:first").removeClass("SubCategoryBox");
				
				alert("移除后 是否有 CSS样式 : "+$("div:first").hasClass("SubCategoryBox"));
				
				//3.添加样式
				
				$("div:first").addClass("SubCategoryBox");
				
				//4.切换样式 , 存在则去除,没有则添加
				
				$(".showmore").click(function(){
					
					$("div:first").toggleClass("SubCategoryBox");
					
					return false;
				});
				
				//5.获取和设置元素透明度:opacity 属性
				
				alert("获取页面透明度为 : "+$("div:first").css("opacity"));
				$("div:first").css("opacity",0.5);//设置透明度
				
				//6.宽度和高度
				
				alert($("div:first").width());//获取
				alert($("div:first").height());
				$("div:first").wdith(500);
				$("div:first").height(90);
				
				//7.获取元素在当前窗口中的相对位移: offset()
				//返回对象包含了两个属性: top , left 该方法只对可见元素有效
				
				alert("TOP : "+$("div:first").offset().top);
				alert("LEFT : "+$("div:first").offset().left);
				
				
				
			})
		</script>
	</head>
	<body>
		<div class="SubCategoryBox">
			<ul>
				<li ><a href="#">佳能</a><i>(30440) </i></li>
				<li ><a href="#">索尼</a><i>(27220) </i></li>
				<li ><a href="#">三星</a><i>(20808) </i></li>
				<li ><a href="#">尼康</a><i>(17821) </i></li>
				<li ><a href="#">松下</a><i>(12289) </i></li>
				<li ><a href="#">卡西欧</a><i>(8242) </i></li>
				<li ><a href="#">富士</a><i>(14894) </i></li>
				<li ><a href="#">柯达</a><i>(9520) </i></li>
				<li ><a href="#">宾得</a><i>(2195) </i></li>
				<li ><a href="#">理光</a><i>(4114) </i></li>
				<li ><a href="#">奥林巴斯</a><i>(12205) </i></li>
				<li ><a href="#">明基</a><i>(1466) </i></li>
				<li ><a href="#">爱国者</a><i>(3091) </i></li>
				<li ><a href="#">其它品牌相机</a><i>(7275) </i></li>
			</ul>
			<div class="showmore">
				<a href="more.html"><span>显示全部品牌</span></a>
			</div>
		</div>
	</body>
</html>


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。