第三章 事件处理

本章内容:

1、为元素绑定事件——bind()方法间接绑定&直接绑定事件

方法一:bind()方法的使用

直接附加事件

2、利用事件对象的目标属性锁定目标元素——event.target()方法

3、自动触发事件——triggert()方法

4、点击之后禁用按钮——unbind()方法

5、处理鼠标事件

响应mouseup事件

6、查明哪个鼠标键被按下——event.button属性的应用

查找鼠标按下时的屏幕坐标——event.screenX & event.screenY

7、动态显示文本——.css({设置CSS样式})

1、为元素绑定事件——bind()方法间接绑定&直接绑定事件

方法一:bind()方法的使用

HTML页面代码(包含jQuery)


<!DOCTYPE html>

<html>

<head>

<title>Test</title>

<meta charset="utf-8">

<link rel="stylesheet" type="text/css" href="style.css">

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">

$(document).ready(function(){

$(".bold").bind("click",function(){       //为bold类的HTML元素绑定内联函数作为单击事件处理程序,即单击事件绑定到bold类

alert("你点击了Bold按钮");

$(".italic").bind("click",function(){

alert("你点击了Italic按钮");

});

});

});

</script>

</head>

<body>

<span class="bold buttons">Bold</span>

<span class="italic buttons">Italic</span>

</body>

</html>

CSS文件代码:


.buttons{

width:100px;

float:left;

text-align:center;

margin:5px;

border:2px solid;

font-weight:bold;

}

(后续的代码示例保持这里的HTML代码和CSS代码)

显示效果:

HTML文件中以下语句:


<span class="bold buttons">Bold</span>

在bold和buttons类的span元素中定义了文本Bold。bold类用于把jQuery代码应用到span元素,而buttons类则把样式表中定义的CSS类buttons的指定样式应用到span元素。

bind()方法:把指定的事件附加到指定的元素。


bind(eventType,data,handler)

evenType:指定事件类型的字符串,如click、double-click、focus、blur;

data:传递到事件处理函数进行处理的数据。如果省略,处理函数作为第二参数;

handler:事件处理函数,包含在指定事件发生时要执行的语句。

以上(jQuery部分)代码也可以写成:


$(document).ready(function(){

$(".buttons").bind("click",function(){

alert("你点击了" + $(this).text() + "按钮");

});

});

显示效果同上,这里是将单击事件绑定在按钮类上,即同时为两个按钮绑定事件。

直接附加事件

不使用bind()方法也可以把事件直接附加到任何指定的元素。

修改jQuery代码即可:


$(document).ready(function(){

$(".buttons").click(function(){

alert("你点击了" + $(this).text() + "按钮");

});

});

click()方法把单击事件绑定到指定元素。


.click(handler)

.click()

handler是事件处理函数,用鼠标点击指定元素时,就执行该函数所包含的语句。

利用事件对象的目标属性——event.target()方法

jQuery代码


$(document).ready(function(){

$(".buttons").click(function(event){

var $target = $(event.target);

if($target.is(".bold")){

alert("你点击了Bold按钮");

}else{

alert("你点击了Italic按钮");

}

});

});

事件对象包含事件细节,JavaScript把事件对象自动发送到事件处理函数。事件对象的其中一个属性称为target(目标),可以用来查明在哪个元素上发生了事件。以上用target属性用来查明元素的目标(已经发生的单击事件),并存储在变量$target中。然后通过条件语句检查存储的$target变量中的元素是Bold类还是italic类,然后报告消息。

自动触发事件——triggert()方法

有两个按钮Bold和Italic,要求实现自动触发任一按钮上的单击事件,即行为不是用户所为,而是脚本;

前部分的HTML页面和CSS代码不变,修改jQuery代码:


$(document).ready(function(){

$(".buttons").bind("click",function(){

alert("你点击了" + $(this).text() + "按钮");

});

$(".italic").trigger("click");

});

trigger()方法:调用指定事件类型的事件处理函数(事件类型作为参数传递到此方法)。

trigger(eventType),eventType是字符串,指定事件的类型,即单击,双击.......该方法返回jQuery对象。当脚本触发事件时,将执行相应的事件处理函数中的代码。这意味着在任何元素上使用trigger()方法之前,需要确认已经为该元素定义了事件处理函数。在以上代码中,把click事件附加到buttons类的元素。即把click事件附加到Bold按钮和Italic按钮上,然后为这两个按钮定义了内联函数作为事件处理函数。再执行$(".italic").trigger("click");触发Italic按钮的click事件,导致它的事件处理函数被调用。

点击之后禁用按钮——unbind()方法

需求:点击表单提交按钮后,希望禁用提交按钮(以避免多次提交);

修改jQuery代码:


$(document).ready(function(){

$(".buttons").bind("click",function(){

alert("你点击了" + $(this).text() + "按钮");

$(".buttons").unbind("click");

});

});

代码作用:单击第一次弹出警告显示你所单击的按钮,而后再次单击任何按钮不再显示消息。

unbind()方法用于指定元素中删除某事件类型。jQuery还支持名称空间的事件,这样便可以通过名称空间而触发或取消绑定(unbind)指定组的已绑定处理函数,无需直接引用它们。

unbind()方法从指定的元素中删除先前绑定的事件处理函数:

unbind(eventType,handler);

unbind(eventType);

unbind();

evnetType:引用不同事件类型,如单击、双击.......附加了指定的eventType的所有事件处理函数将被停止执行。

handler:要删除的事件处理函数,应该与传递到bind()方法的事件处理函数相同。

如果不传递任何参数,所有的事件都被删除。

处理鼠标事件

前面的HTML和CSS代码不做改变。

响应mouseup事件

一旦鼠标指针在元素上并且释放鼠标键,则发生mouseup事件。


$(document).ready(function(){

$(".buttons").mouseup(function(){

alert($(this).text() + "按钮发生mouseup事件");

});

});

.mouseup(handler)   handler是事件发生时执行的内联函数

.mouseup()         用于手动调用mouseup事件

以mouseup事件为例,下面mousedown、mouseover、mouseout等事件都是如此处理;

mousedown:鼠标在指定元素上时按下鼠标键,就触发mousedown事件;

mouseover:一旦鼠标指针进入指定元素的区域,则发生了mousedown事件;

mouseout:鼠标指针离开指定元素,就出发mouseout事件;

查明哪个鼠标键被按下——event.button属性的应用


<!DOCTYPE html>

<html>

<head>

<title>Test</title>

<meta charset="utf-8">

<link rel="stylesheet" type="text/css" href="style.css">

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">

$(document).ready(function(){

$("button").mousedown(function(event){

if(event.button==0){

alert(event.button);

$("p").text("点击了左键");

}else{

alert(event.button);

$("p").text("点击了右键");

}

});

});

</script>

</head>

<body>

<button>Click Me</button><br/><br/>

<p></p>

</body>

</html>

在jQuery代码中,把mousedown事件绑定在button元素上,当事件发生时,JavaScript把事件对象发送到事件处理函数。所以一旦在按钮上按下任一鼠标键,事件对象就会自动传递事件到事件处理函数。利用事件对象的button属性来确定哪个鼠标键被按下。对于左鼠标键,event.button==0;有鼠标键,event.button==2;

显示效果:

查找鼠标按下时的屏幕坐标——event.screenX & event.screenY


<!DOCTYPE html>

<html>

<head>

<title>Test</title>

<meta charset="utf-8">

<link rel="stylesheet" type="text/css" href="style.css">

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">

$(document).ready(function(){

$("div").mousedown(function(event){

$("p").text("鼠标点击位置是横坐标:" + event.screenX + "   纵坐标:" + event.screenY);

});

});

</script>

</head>

<body>

<div style="width:100px;height:100px;"></div>

<p></p>

</body>

</html>

screenX:指定事件发生时相对与屏幕原点的横坐标;

screenY:指定事件发生时相对与屏幕原点的纵坐标;

7、动态显示文本——.css({设置CSS样式})

把按钮形状赋予文本,当鼠标在文本上方移动时,需要突出显示该文本(通过改变文本的前景色和背景色);


<!DOCTYPE html>

<html>

<head>

<title>Test</title>

<meta charset="utf-8">

<link rel="stylesheet" type="text/css" href="style.css">

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">

$(document).ready(function(){

$("button").mouseover(function(){

$("p").css({

"background-color":"cyan",

"font-weight":"bold",

"color":"blue"

});

});

$("button").mouseout(function(){

$("p").css({

"background-color":"cyan",

"font-weight":"bold",

"color":"#acacac"

});

})

});

</script>

</head>

<body>

<p>我是文本我是文本我是文本我是文本我是文本我是文本我是文本我是文本我是文本<br/>

我是文本我是文本我是文本我是文本我是文本我是文本我是文本我是文本我是文本<br/>

我是文本我是文本我是文本我是文本我是文本我是文本我是文本我是文本我是文本<br/>

我是文本我是文本我是文本我是文本我是文本我是文本我是文本我是文本我是文本<br/>

我是文本我是文本我是文本我是文本我是文本我是文本我是文本我是文本我是文本<br/>

</p>

<button>Highlight</button>

</body>

</html>

以上代码用了一种技术,即覆盖在样式表中定义的样式属性,并把CSS属性直接应用到指定元素。jQuery提供css()方法,用于把CSS属性直接应用于HTML元素。此方法为指定的元素直接设置CSS样式,覆盖在样式表中定义的样式(如果有)。


.css(property,value)

本例显示效果(左:当鼠标移到button按钮上,右:当鼠标移除button按钮)

示例代码二(用JavaScript实现):

HTML页面部分:


<!DOCTYPE html>

<html>

<head>

<title>javaScript与网页表单交互操作</title>

<meta charset="utf-8">

<script type="text/javascript" src = "javaScript-1.js"></script>

</head>

<body>

<div id="infoTab">

<table border="1" cellpadding="5" cellspacing="0" bgColor="#D68E8E" width="100%">

<tr id="infoTr">

<td>姓名</td>

<td>年龄</td>

<td>学历</td>

</tr>

<tr id="infoTr">

<td>张三</td>

<td>10</td>

<td>小学</td>

</tr>

<tr id="infoTr">

<td>李四</td>

<td>12</td>

<td>初中</td>

</tr>

<tr id="infoTr">

<td>王五</td>

<td>19</td>

<td>大学</td>

</tr>

</table>

</div>

</body>

</html>

JavaScript部分:


/**

*obj:表示当前要改变颜色的对象

*color:设置要显示的颜色

*bgColor:在HTML页面代码已设置的背景颜色

*/

function changeColor(obj,color){

obj.bgColor = color;

}

window.onload = function(){

// var trObj = document.getElementById("infoTr"); 这里的document只能取得第一个‘infoTr’,所有应该采用document.all(ID);它返回对象数组;

var trObj = document.all("infoTr");

for (var x = 0 ; x<trObj.length;  x++) {

trObj[x].addEventListener("mouseover",function () {

//this表示当前操作的对象,实际上就是一行

changeColor(this,‘FFFFFF‘);

},false);

trObj[x].addEventListener("mouseout",function () {

changeColor(this,‘D68E8E‘);

},false);

}

}

当鼠标移入某一行,则改行变色。

显示效果:

时间: 2024-10-12 20:24:24

第三章 事件处理的相关文章

Android教材 | 第三章 Android界面事件处理(二)—— 杰瑞教育原创教材试读

 编者按 JRedu 杰瑞教育原创系列教材将于年后与大家正式见面.为更好的借鉴读者意见,我们将会陆续地在博客园推出一系列教材试读.我们也热忱的欢迎广大博友与我们互动,提出宝贵意见. 本篇博客将推出教材第三章第二部分的试读(传送门:第一部分),请大家继续提出宝贵意见,我们也将为积极互动的博友,免费提供我们的原创教材以及更多福利,也欢迎大家加入最下方QQ群与我们交流,谢谢大家! 3.5 系统设置事件处理 3.5.1onConfigurationChanged响应事件 在App开发过程中,有时候需要获

C语言探索之旅】 第一部分第四课第三章:变量的世界之显示变量内容

内容简介 1.课程大纲 2.第一部分第四课第三章:变量的世界之显示变量内容 3.第一部分第五课预告:基本运算 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 基本运算 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量

第三章 界面UI的基石—UI布局(1)

第三章界面UI的基石-UI布局 上一章我们一起学习了Android中的常用组件及一些UI编程的技术.在此基础上,我们就可以将这些组件有效的组织起来,构成一个美观.合理的界面. 在本章,我们先来详细说明Android中UI的几种布局,通过这几种布局就能将组件有效的组合到一起.然后说明在Android开发中如何应用样式和主题,通过样式和主题,可以预定义一系列的属性值,使整个应用程序形成统一的显示风格. 3.1用户界面的基本单元-View视图 在Android SDK中,View(视图)类是视图类的一

构建之法前三章读后感

一. 软件作为一个产品,在提供用户使用前经历了许多工序,我们用工程的方式将开发软件的工序,过程加以工程化,系统化.成立了一套完整的体系后,有利于帮助我们开发软件,乃至于大型的系统. 软件具有一定的特殊性,使得软件工程师们做开发提升了一定的难度,但软件工程有助于软件系统的开发,帮助工程师们设计,构建,测试和维护软件.所以,软件工程的最终目的是帮助工程师们创造“足够好”的软件,提高软件的质量,用户满意度,可靠性,可维护性等. 第一章问题:怎么才算是一个真正的软件工程师? 二.   一个优秀的软件,通

0320 《构建之法》前三章观后感

第一章.为我们解释什么是软件,什么是软件工程,读完这章对这些概念有一定的认识这章让我明白,代码不能盲目的敲,好的软件并非两三天,并非一两个人就能赶出来的,需要大家的精诚合作.同时,在编写程序之前,还需要做一系列的分析.设计,要满足客户的需求,后续还要对软件进行测试.维护等.在这之前,我一直觉得能把程序运行,能有正确的结果,那就完成任务了,可这只是整个软件流程的一部分而已.看了邹老师的书,才知道其实创新有很多的方面,除了技术,还有商业思路,差异化等等,这些都给了我很大的感触,作为一名程序员,我们不

家庭作业——第三章

第三章家庭作业    3.69和3.70 3.69 A:long trace(tree_ptr tp)    {        long ret = 0;        while(tp != NULL)        {           ret = tp->val;           tp = tp->left;        }        return ret;    } B:作用是从根一直遍历左子树,找到第一个没有左子树的节点的值. 3.70 A:long traverse(t

第三章 Linux操作系统的安装

第三章 Linux操作系统的安装 因为笔者一直都是使用CentOS,所以这次安装系统也是基于CentOS的安装.把光盘插入光驱,设置bios光驱启动.进入光盘的欢迎界面. 其中有两个选项,可以直接按回车,也可以在当前界面下输入 linux text 按回车.前者是图形下安装,可以动鼠标的,后者是纯文字形式的.建议初学者用前者安装.直接回车后,出现一下界面: 这一步是要提示你是否要校验光盘,目的是看看光盘中的安装包是否完整或者是否被人改动过,一般情况下,如果是正规的光盘不需要做这一步操作,因为太费

《C#高级编程》【第三章】对象和类型 -- 学习笔记

在看过C++之后,再看C#的面向对象感觉就不难了,只是有一些区别而已. 1.类定义 使用class关键字来声明类,其和C++不同的地方是在大括号之后不需要冒号 class 类名 { //类的内部 } //C++这里有一个冒号,而C#没有 2.类成员 3.字段与属性 首先我们先区分一下C#数据成员中的字段.常量与事件成员.字段.常量是与类的相关变量.事件是类的成员,在发生某些行为时(如:改变类的字段或属性,或进行某种形式的用户交互操作),它可以让对象通知调用方. 那么现在我们在来看看字段与属性,属

标准库》第三章 包装对象和Boolean对象

第三部分  标准库 ***************第三章   包装对象和Boolean对象******************* 一.包装对象的定义[1]有人说,JavaScript语言"一切皆对象",数组和函数本质上都是对象,就连三种原始类型的值--数值.字符串.布尔值--在一定条件下,也会自动转为对象,也就是原始类型的"包装对象". 所谓"包装对象",就是分别与数值.字符串.布尔值相对应的Number.String.Boolean三个原生对象