成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? 淺談jQuery 中的事件冒泡和阻止默認行為
全站頭部文字 我要出現在這里
淺談jQuery 中的事件冒泡和阻止默認行為 659 2024-03-02   

1、事件冒泡

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
	 	<script type="text/javascript" src="http://www.gimoo.net/t/1902/js/jquery-1.7.2.js"></script>
		<script type="text/javascript">
			$(function() {
				//為 <span> 元素綁定 click 事件
				$("span").click(function() {
					$("#msg").html($("#msg").html() + "<p>內層span元素被單擊</p>");
				});
				//為 Id 為 content 的 <div> 元素綁定 click 事件
				$("#content").click(function() {
					$("#msg").html($("#msg").html() + "<p>外層div元素被單擊</p>");
				});
				//為 <body> 元素綁定 click 事件
				$("body").click(function() {
					$("#msg").html($("#msg").html() + "<p>body元素被單擊</p>");
				});
			});
		</script> 	
		
		< CSS -->
		<style type="text/css">
			#content {
				background: #b17af5;
			}		
		</style>
 	</head>
 
 	< HTML -->
 	<body>
 		<div id="content">
 			外層div元素<br />
 			<span style="background: silver;">內層span元素</span><br />
 			外層div元素
 		</div><br />
 		<div id="msg"></div>
 	</body>
</html>

當點擊內部 <span> 元素時,會觸發自身及外層 <div> 和 <body> 的點擊事件,這就是事件冒泡引起的。事件會隨著 DOM 的層次結構依次向上傳播。

事件冒泡可能會引起意料之外的效果,有時候需要阻止事件的冒泡行為,使用 stopPropagation() 方法來實現。

修改 <span> 元素的 click 事件函數:

//為 <span> 元素綁定 click 事件
$("span").click(function(event) {	//為方法添加一個事件對象參數
	$("#msg").html($("#msg").html() + "<p>內層span元素被單擊</p>");
	event.stopPropagation();	//阻止 <span> 的 click 事件冒泡
});

此時點擊內部 <span> 元素時,只會觸發自身的 click 事件,不會再向上冒泡。

2、阻止默認行為

有時候用戶的操作未滿足某些條件時,需要阻止某些元素的默認行為,如鏈接的跳轉和表單的提交等,jQuery 提供了 preventDefault() 方法來實現。

當用戶未填寫用戶名時,阻止表單提交:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
	 	<script type="text/javascript" src="http://www.gimoo.net/t/1902/js/jquery-1.7.2.js"></script>
		<script type="text/javascript">
			$(function() {
				$(":submit").click(function(event) {	 //為方法添加一個事件對象參數
					//當未輸入用戶名時,提示并阻止提交
					if ($(":text").val() == "") {	
						$("#msg").text("用戶名不能為空");
						event.preventDefault();		//阻止提交按鈕的默認行為(提交表單)
					}
				});
			});
		</script> 	
 	</head>
 
 	< HTML -->
 	<body>
 		<form action="register.action">
 			用戶名<input type="text" name="id" />
 			<input type="submit" value="注冊" />
 			<div id="msg"></div>
 		</form>
 	</body>
</html>

如果想同時阻止事件冒泡和阻止元素默認行為,可以在事件函數中返回 false 來代替調用 stopPropagation() 和 preventDefault() 方法。

如:

$(":submit").click(function(event) {	 //為方法添加一個事件對象參數
	//當未輸入用戶名時,提示并阻止提交
	if ($(":text").val() == "") {	
		$("#msg").text("用戶名不能為空");
		return false;		//阻止提交按鈕的默認行為(提交表單)和事件冒泡
	}
});$("span").click(function(event) {	//為方法添加一個事件對象參數
	$("#msg").html($("#msg").html() + "<p>內層span元素被單擊</p>");
	return false;	//阻止 <span> 的 click 事件冒泡和默認行為(此元素沒有默認行為)
});

以上這篇淺談jQuery 中的事件冒泡和阻止默認行為就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持綠夏網。



主站蜘蛛池模板: 人流后饮食| 咖啡王子一号店| 1—36集电视剧在线观看| 黑凤凰电视剧剧情介绍| charlie sheen| 欲情电影在线看| 违规吃喝研讨发言材料| 改朝换代| 超越情感电视剧免费观看全集完整版| 左左木明希| 十一码复式中奖表图片| 性视频播放| 找保姆| 肢体的诱惑电影| 我和我的父辈 电影| 时来运转电影| 楼下的女邻居| freexxxmovies| 喜羊羊第一部全集免费| 电影《七天》| 塞下曲景然伶儿| 太原教育电视台| 藏文作文| av网址大全| 我的奇妙男友2| 二胡独奏北国之春| 香港之夜完整版在线观看高清| 香港艳情电影| 坏老师| 陈建斌梅婷新剧《不惑之旅》| 搜狐手机首页| 安东诺夫机场电影叫什么名字| 好好操视频| 安塞| 挠中国美女丝袜脚心| 在线免费污视频| 麻花影业| 命运简谱| 南通紫琅音乐节| 大内群英 电视剧| 杨冲|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103