JQuery学习笔记(四)——创建、插入和删除节点

一个小练习:

需求1: 点击 submit 按钮时, 检查是否选择 type, 若没有选择给出提示: "请选择类型"; 
检查文本框中是否有输入(可以去除前后空格), 若没有输入,则给出提示: "请输入内容";
若检查都通过, 则在相应的 ul 节点中添加对应的 li 节点 
需求2: 使包括新增的 li 都能响应 onclick 事件: 弹出 li 的文本值. 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
	<script type="text/javascript" src="scripts/jquery-1.7.2.js"></script>
	<script type="text/javascript">
		
		//需求: 点击 submit 按钮时, 检查是否选择 type, 若没有选择给出提示: "请选择类型"; 
		//     检查文本框中是否有输入(可以去除前后空格), 若没有输入,则给出提示: "请输入内容";
		//若检查都通过, 则在相应的 ul 节点中添加对应的 li 节点 
	
		//需求2: 使包括新增的 li 都能响应 onclick 事件: 弹出 li 的文本值. 

		$(function() {
			$("#submit").click(function() {
				var val = $.trim($("input[name='name']").val());
				if (val == "") {
					alert("请输入内容!");
				} else {
					if ($("input[name='type']:checked").val() == "city") {
						// 添加城市
						$("<li>" + val + "</li>").appendTo($("#city")).click(function(){
							alert($(this).text());
						});
					} else if ($("input[name='type']:checked").val() == "game"){
						// 添加游戏
						$("<li>" + val + "</li>").appendTo($("#game")).click(function(){
							alert($(this).text());
						});						
					} else {
						alert("请选择类型!");
					}
				}
				return false;
			});
			$("ul li").click(function(){
				alert($(this).text());
			});
		})
	</script>
</head>
<body>

	<p>你喜欢哪个城市?</p>
	
		<ul id="city">
			<li id="bj">北京</li>
			<li>上海</li>
			<li>东京</li>
			<li>首尔</li>
		</ul>
		
		<br><br>
		<p>你喜欢哪款单机游戏?</p>
		<ul id="game">
			<li id="rl">红警</li>
			<li>实况</li>
			<li>极品飞车</li>
			<li>魔兽</li>
		</ul>
		
		<br><br>
		
		<form action="dom-7.html" name="myform">
			
			<input type="radio" name="type" value="city">城市
			<input type="radio" name="type" value="game">游戏
		
			name: <input type="text" name="name"/>
		
			<input type="submit" value="Submit" id="submit"/>
			
		</form>


</body>
</html>


DOM

DOM:一种与浏览器,平台,语言无关的接口,使用该接口可以轻松地访问页面中所有的标准组件
DOM分类:
DOM Core:DOM Core不专属于JavaScript,任何一种支持DOM的程序设计语言都可以使用。
用途并非仅限于处理网页,也可以用来处理任何一种是用标记语言编写出来的文档,如:XML
HTML DOM:使用JavaScript和DOM为HTML文件编写脚本是,有许多专属于HTML-DOM的属性。
CSS  DOM:针对于CSS操作,在JavaScript中,CSS DOM主要用于获取和设置style对象的各种属性。

查找节点

查找属性节点:通过JQuery选择器完成
操作属性节点:查找到所需的元素之后,可以调用JQuery对象的attr()方法来获取它的各种属性值。
操作文本节点:通过text()方法。
<!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="scripts/jquery-1.7.2.js"></script>
		<script type="text/javascript">
			
			//测试使用 jQuery 操作文本节点, 属性节点. 
			//及查找元素节点
			
			$(function(){
				//1. 操作文本节点: 通过 jQuery 对象的 text() 方法
				alert($("#bj").text());
				//2. 操作属性节点: 通过 jQuery 对象的 attr() 方法. 
				//注: 直接操作 value 属性值可以使用更便捷的 val() 方法. 
				alert($(":text[name='username']").attr("value"));
				$(":text[name='username']").val("测试")
				alert("2");
				$("input[name='username']").val("测试2");
			})
			
		
		</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>
		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="atguigu"/>
		
	</body>
</html>	

创建节点

使用JQuery的工厂函数$():$(html),会根据传入的HTML标记字符串创建一个DOM对象,
并把这个DOM对象包装成一个JQuery对象返回
<!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="scripts/jquery-1.7.2.js"></script>
		<script type="text/javascript">
			
			//测试使用 jQuery 创建节点并插入节点到指定的节点中
			/*
			1. 创建节点: 使用 $(html) 方式即可, 元素节点, 文本节点, 属性节点可以一网打尽
			返回对应节点的 jQuery 对象:
			$("<li id='atguigu'>尚硅谷</li>")
			
			2. 添加节点:
			1). appendTo 和 append: 主语和宾语的位置不同:  
			$("<li id='atguigu'>尚硅谷</li>").appendTo($("#city"));	
			$("#city").append("<li id='atguigu'>[尚硅谷]</li>");
			
			2). prependTo 和  prepend: 主语和宾语的位置不同: 
			$("<li id='atguigu'>尚硅谷</li>").prependTo($("#city"));
			$("#city").prepend("<li id='atguigu'>[尚硅谷]</li>");	
			*/
			$(function(){
				//1. 创建一个 <li id="atguigu">尚硅谷</li>
				//2. 并把其加入到 #city 的子节点
				//$("<li id='atguigu'>尚硅谷</li>").appendTo($("#city"));
				//$("#city").append("<li id='atguigu'>[尚硅谷]</li>");

				//$("<li id='atguigu'>尚硅谷</li>").prependTo($("#city"));
				
				//$("<li id='test'>测试</li>").appendTo($("#city"));
				
				$("#city").prepend("<li id='test'>测试</li>");
				alert($("#test").text());
			})
			
		
		</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>
		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="atguigu"/>
		
	</body>
</html>	

插入节点

1)成为文档中某个节点的子节点

append() 向每个匹配的元素的内部的结尾处追加内容
appendTo() 将每个匹配的元素追加到指定的元素中的内部的结尾处
prepend() 向每个匹配元素的内部的开始出插入内容
prepend() 将每个匹配的元素插入到指定的元素内部的开始处

2)对原有DOM元素进行移动

after() 向每个匹配的元素的之后插入内容 ep:A.after(B),将B插入A后面
insertAfter() 向每个匹配的元素插入到指定元素之后 ep:B.insertAfter(A),将B插入A后面
before() 向每个匹配的元素的之前插入内容
insertBefore() 向每个匹配的元素插入到指定的元素之前
<!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="scripts/jquery-1.7.2.js"></script>
		<script type="text/javascript">
			
			//测试使用 jQuery 插入节点
			$(function(){
				//1. 创建一个 <li id="atguigu">尚硅谷</li>
				//2. 并把其加入到 #bj 的后面
				//$("<li id='atguigu'>尚硅谷</li>").insertAfter($("#bj"));
				//$("#bj").after("<li id='atguigu'>[尚硅谷]</li>");

				//$("<li id='atguigu'>尚硅谷</li>").insertBefore($("#bj"));
				//$("#bj").before("<li id='atguigu'>[尚硅谷]</li>");
				$("<li>测试</li>").insertAfter($("#bj"));
				//$("#bj").after($("<li>测试</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>
		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="atguigu"/>
		
	</body>
</html>	

注*:
1.同 JS 的响应函数一样, jQuery 对象的响应函数若返回 false, 
可以取消指定元素的默认行为. 比如 submit, a 等
2.val() 方法, 相当于 attr("value"), 获取表单元素的 value 属性值. 
3.$.trim(str): 可以去除 str 的前后空格.
4.jQuery 对象的方法的连缀: 调用一个方法的返回值还是调用的对象, 于是可以
在调用方法的后面依然调用先前的那个对象的其他方法.

删除节点

remove() 从DOM中删除所有匹配的元素 ,传入的参数用于根据JQuery表达式来筛选元素。当某个节点
用remove()方法删除后,该节点所包含的所有后代节点将被同时删除。
这个方法的返回值是一个指向已被删除的节点的引用。
empty() 清空节点-清空元素中的所有后代节点(不包含属性节点)

<!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="scripts/jquery-1.7.2.js"></script>
		<script type="text/javascript">
			
			//测试使用 jQuery 删除节点
			$(function(){
				//1. 为 #city 的每一个 li 添加 click 响应函数: 点击时, li 被删除
				//$("#city li").click(function(){
				//	$(this).remove();
				//});
				$("li").click(function(){
					$(this).remove();
				});
				//jQuery 对象的 remove() 方法: 将把 jQuery 对象对应的
				//DOM 节点直接删除. 
				$("#bj").remove();
				
				//2. 清空 #game 节点
				//jQuery 对象的 empty() 方法: 清空 jQuery 对象对应的 
				//DOM 对象的所有的子节点. 
				alert("要清空了!");
				$("#game").empty();
			})
			
		
		</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>
		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="atguigu"/>
		
	</body>
</html>	


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值