一步一步学习 JQuery (七) JQuery 中的事件处理

一、加载 DOM 

在页面加载完毕后, 浏览器会通过 JavaScript 为 DOM 元素添加事件. 在常规的 JavaScript 代码中, 通常使用 window.onload 方法, 在 jQuery 中使用$(document).ready() 方法.

<span style="font-size:14px;"><!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.9.1.js"></script>
		<script type="text/javascript">

			//加载 DOM 的两种方式: jQuery 的 和 window.onlaod

			/*
			window.onload = function(){
				alert("1");
			}

			window.onload = function(){
				alert("2");
			}
			只能执行 2 ,相当于 前一个window.onload 被后面的覆盖
			*/

			/*
			$(document).ready(function(){
				alert(1);
			});
			$(document).ready(function(){
				alert(2);
			});
			*/

			//$(document).ready(function(){})可以同时写多个,window只能一个
			//$(document).ready(function(){}); 缩写  $(function(){});
			/* $(function(){

			}); */

		</script>

	</head>
	<body>
		<p>你喜欢哪个城市?</p>
		<ul id="city">
			<li id="bj">北京</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>	</span>

二、事件绑定 And 和合成事件

对匹配的元素进行特定的事件绑定: bind()

使用 jQuery 的 is() 方法判断元素是否可见

hover(): 模拟光标悬停事件. 当光标移动到元素上时, 会触发指定的第一个函数, 当光标移出这个元素时, 会触发指定的第二个函数.

toggle(): 用于模拟鼠标连续单击事件. 第一次单击元素, 触发指定的第一个函数, 当再一次单击同一个元素时, 则触发指定的第二个函数, 如果有更多个函数, 则依次触发, 直到最后一个.

toggle() 的另一个作用: 切换元素的可见状态.

<span style="font-size:14px;"><!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>
		<link href="css/style.css" type="text/css" rel="stylesheet" />
		<script type="text/javascript" src="scripts/jquery-1.7.2.js"></script>

		<script type="text/javascript">
			//为 .head 添加 Onclick 响应函数: 若 .content 隐藏则显示, 若 .content 显示, 则隐藏
			$(function(){
				/*
				$(".head").click(function(){
					//使用 is() 方法, 来判断某个给定的 jQuery 对象是否符合指定
					//的选择器.
					var flag = $(".content").is(":hidden");

					if(flag){
						//show() 方法: 使隐藏的变为显示
						$(".content").show();
					}else{
						$(".content").hide();
					}
				});
				*/

				//bind: 为某 jQuery 对象绑定事件.
				/*
				该方法不太实用,应用于 事件是事先存储好的,比如需要 时而点击效果、时而碰触效果,比较炫
				$(".head").bind("click", function(){
					//使用 is() 方法, 来判断某个给定的 jQuery 对象是否符合指定
					//的选择器.
					var flag = $(".content").is(":hidden");

					if(flag){
						//show() 方法: 使隐藏的变为显示
						$(".content").show();
					}else{
						$(".content").hide();
					}
				});
				*/

				//mouseover: 鼠标移上去
				//mouseout: 鼠标移出.
				/*
				$(".head").mouseover(function(){
					$(".content").show();
				}).mouseout(function(){
					$(".content").hide();
				});
				*/

				//合成事件: hover: 鼠标移上去执行第一个函数, 移出执行第二个函数. 

				/* $(".head").hover(function(){
					$(".content").show();
				}, function(){
					$(".content").hide();
				}); */

				//合成事件: toggle: 第一次点击执行第一个函数, 第二次点击执行第二个
				//函数 ... 循环执行.
				 $(".head").toggle(function(){
					$(".content").show();
				}, function(){
					$(".content").hide();
				});
			})
		</script>

	</head>
	<body>
		<div id="panel">
			<h5 class="head">什么是jQuery?</h5>
			<div class="content">
				jQuery是继Prototype之后又一个优秀的JavaScript库,它是一个由 John Resig 创建于2006年1月的开源项目。jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。它独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
			</div>
		</div>
	</body>

</html>
</span>

三、事件冒泡

事件会按照 DOM 层次结构像水泡一样不断向上只止顶端

解决: 在事件处理函数中返回 false, 会对事件停止冒泡. 还可以停止元素的默认行为.

<span style="font-size:14px;"><!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>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			body{
				font-size: 13px;
				line-height: 130%;
				padding: 60px;
			}
			#content{
				width: 220px;
				border: 1px solid #0050D0;
				background: #96E555;
			}
			span{
				width: 200px;
				margin: 10px;
				background: #666666;
				cursor: pointer;
				color: white;
				display: block;
			}
			p{
				width: 200px;
				background: #888;
				color: white;
				height: 16px;
			}
		</style>
		<script type="text/javascript" src="../scripts/jquery-1.9.1.js"></script>
											<!-- "../scripts ../ 返回上一层 -->
		<script type="text/javascript">

			$(function(){
				//事件的冒泡: 什么是事件的冒泡

				//如果没有return false,点击div 会弹出 div click + body click
				//点击 span 会弹出span click + div click + body click 如冒泡一样一层一层向上冒
				$("body").click(function(){
					alert("body click");
				});

				$("#content").click(function(){
					alert("div click");
				});

				$("span").click(function(){
					alert("span click");
					//如何解决事件的冒泡: 通过在响应函数的结尾返回 false, 可以阻止冒泡.
					return false;
				});
			})

		</script>
	</head>
	<body>
		<div id="content">
			外层div元素
			<span>内层span元素</span>
			外层div元素
		</div>

		<div id="msg"></div>	

		<br><br>
		<a href="http://www.hao123.com">WWW.HAO123.COM</a>
	</body>
</html></span>

四、事件对象的属性

事件对象: 当触发事件时, 事件对象就被创建了. 在程序中使用事件只需要为函数添加一个参数. 该事件对象只有事件处理函数才能访问到. 事件处理函数执行完毕后, 事件对象就被销毁了.

event.pageX, event.pageY: 获取到光标相对于页面的 x, y 坐标.

<span style="font-size:14px;"><!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>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			body{
				font-size: 13px;
				line-height: 130%;
				padding: 60px;
			}
			#content{
				width: 220px;
				border: 1px solid #0050D0;
				background: #96E555;
			}
			span{
				width: 200px;
				margin: 10px;
				background: #666666;
				cursor: pointer;
				color: white;
				display: block;
			}
			p{
				width: 200px;
				background: #888;
				color: white;
				height: 16px;
			}
		</style>
		<script type="text/javascript" src="scripts/jquery-1.9.1.js"></script>
		<script type="text/javascript">

			/*
			1. 事件: 当鼠标在body中移动时, 就会触发 mousemove 事件.
			2. 如何得到事件对象: 在响应函数中添加一个参数就可以.
			3. 事件对象的两个属性: pageX,pageY

			应用:比如鼠标在某图片内,鼠标碰触就会放大该图片,鼠标移动,放大的图片跟随移动
			*/
			$(function(){
				//事件的 pageX, pageY 属性
				$("body").mousemove(function(obj){
					$("#msg").text("x: " + obj.pageX
							+ ", y: " + obj.pageY);
				});
			})

		</script>
	</head>
	<body>
		<div id="content">
			外层div元素
			<span>内层span元素</span>
			外层div元素
		</div>

		<div id="msg"></div>	

		<br><br>
		<a href="http://www.hao123.com">WWW.HAO123.COM</a>
	</body>
</html>
</span>

五、移除事件

移除某按钮上的所有  click 事件: $(“btn”).unbind(“click”)

移除某按钮上的所有事件: $(“btn”).unbind();

one(): 该方法可以为元素绑定处理函数. 当处理函数触发一次后, 立即被删除. 即在每个对象上, 事件处理函数只会被执行一次.

<span style="font-size:14px;"><!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.9.1.js"></script>
		<script type="text/javascript">

			//测试移除事件: 使用 unbind 移除事件.
			//one(): 只为某一个元素添加一次事件, 事件函数响应后, 将不再被触发响应.
			$(function(){

				$("#rl").one("click", function(){
					alert("红色警戒. ");
				});

				$("li:not(#rl)").click(function(){
					alert(this.firstChild.nodeValue);

					//对于 #bj 节点, 点击一次后, 就没有 click 响应函数了
					if(this.id == "bj") //如果不加判断,先点击其他节点,也会移除事件
						$("#bj").unbind("click");
				});

			})

		</script>

	</head>
	<body>
		<p>你喜欢哪个城市?</p>
		<ul id="city">
			<li id="bj">北京</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>	</span>
时间: 2024-10-13 08:56:28

一步一步学习 JQuery (七) JQuery 中的事件处理的相关文章

从零开始学习jQuery (七) jQuery动画-让页面动起来!

原文:从零开始学习jQuery (七) jQuery动画-让页面动起来! 本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 从零开始学习jQuery (五) 事件与事件对象 从零开始学习jQuery (六) jQuery中的Ajax 从零开始学习jQuery (七) jQuery动画-让页面动起来! 从零

(转)Maven学习总结(七)——eclipse中使用Maven创建Web项目

孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(七)——eclipse中使用Maven创建Web项目 一.创建Web项目 1.1 选择建立Maven Project 选择File -> New ->Project,如下图所示: 在New窗口中选择 Maven -> Maven Project.点击[next]如下图所示: 1.2 选择项目路径 根据项目的实际情况选择项目的存放目录,也可以选择[Use default Workspace location]默认工作空间.如下图

OpenCv学习笔记(七)---OpenCv中的基本绘图函数,圆,椭圆,线段,矩形,多边形的绘制(1)

(一)本节教程的目的 本节你将学到: 1--如何使用Point在图像中定义2D点 2--如何以及为何使用Scalar 3--用OpenCv的函数Line绘直线 4--用OpenCvd的函数ellipse绘制椭圆 5--用OpenCv的函数rectangle绘矩形 6--用OpenCv的函数circle绘圆 7--用OpenCv的函数fillPoly绘填充多边形 (二)原理,本节我们将大量使用Point和Scalar这两个结构: **********************************

Maven学习总结(七)——eclipse中使用Maven创建Web项目

一.创建Web项目 1.1 选择建立Maven Project 选择File -> New ->Project,如下图所示: 在New窗口中选择 Maven -> Maven Project.点击[next]如下图所示: 1.2 选择项目路径 根据项目的实际情况选择项目的存放目录,也可以选择[Use default Workspace location]默认工作空间.如下图所示: 1.3 选择项目类型 在Artifact Id中选择maven-archetype-webapp,如下图所示

从零开始学习jQuery (九) jQuery工具函数

原文:从零开始学习jQuery (九) jQuery工具函数 本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 从零开始学习jQuery (五) 事件与事件对象 从零开始学习jQuery (六) jQuery中的Ajax 从零开始学习jQuery (七) jQuery动画-让页面动起来! 从零开始学习jQ

一步一步学习 JQuery (一) JQuery 对象

jQuery 是继 Prototype 之后又一个优秀的 JavaScript 库 jQuery 理念: 写得少, 做得多. 优势如下: 轻量级 强大的选择器 出色的 DOM 操作的封装 可靠的事件处理机制 完善的 Ajax 出色的浏览器兼容性 链式操作方式 JQuery:Hello World <html> <head> <meta charset="UTF-8"> <title>Insert title here</title&

一步一步学习 JQuery (二) 选择器: 基本选择器 &amp;&amp; 层次选择器

选择器是 jQuery 的根基, 在 jQuery 中, 对事件处理, 遍历 DOM 和 Ajax 操作都依赖于选择器 jQuery 选择器的优点: 简洁的写法 完善的事件处理机制 一.基本选择器 基本选择器是 jQuery 中最常用的选择器, 也是最简单的选择器, 它通过元素 id, class 和标签名来查找 DOM 元素(在网页中 id 只能使用一次, class 允许重复使用). 改变 id 为 one 的元素的背景色为 # bbffaa 改变 class 为 mini 的所有元素的背景

一步一步写jQuery插件

转载自:http://www.cnblogs.com/joey0210/p/3408349.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jquery的插件机制,jquery有着成千上万的第三方插件,有时我们写好了一个独立的功能,也想将其与jquery结合起来,可以用jquery链式调用,这就要扩展jquery,写成插件形式了,如下

jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、

脚 本 之 家 www.jb51.net 脚本云 专题 素材下载 电子书 软件下载 源码下载 服务器常用软件 a5交易 首页 网页制作 脚本专栏 脚本下载 网络编程 数据库 CMS教程 电子书籍 平面设计 媒体动画 操作系统 网站运营 网络安全 YUI.Ext相关 prototype jquery dojo json lib_js js面向对象 extjs Mootools Seajs 其它 特色栏目: vbscript 正则表达式 javascript 批处理 服务器软件 素材下载 低价出售流