`
ydwcn
  • 浏览: 65153 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

事件与事件对象(四)

阅读更多

七、使用jquery对象

使用事件自然少不了事件对象. 因为不同浏览器之间事件对象的获取, 以及事件对象的属性都有差异, 导
致我们很难跨浏览器使用事件对象.

jQuery中统一了事件对象, 当绑定事件处理函数时, 会将jQuery格式化后的事件对象作为唯一参数传
入:

1 $("#testDiv").bind("click", function(event) { });

关于event对象的详细说明, 可以参考jQuery官方文档: http://docs.jquery.com/Events/jQuery.Event

jQuery事件对象将不同浏览器的差异进行了合并, 比如可以在所有浏览器中通过 event.target 属性来获取事件的触发者(在IE中使用原生的事件对象, 需要访问event.srcElement).

下面是 jQuery 事件对象可以在扩浏览器支持的属性:

属性名称 描述 举例
type

事件类型.如果使用一个事件处理函数来处理多
个事件, 可以使用此属性获得事件类型,比如
click.

$("a").click(function(event) {
alert(event.type);
});

target

获取事件触发者DOM对象

$("a[href=http://google.com]").click(function(event)
alert(event.target.href);
});

data

事件调用时传入额外参数.

$("a").each(function(i) {
$(this).bind('click', {index:i}, function(e){
alert('my index is ' + e.data.index);
});
});

relatedTarget

对于鼠标事件, 标示触发事件时离开或者进入
的DOM元素

$("a").mouseout(function(event) {
alert(event.relatedTarget);
});

currentTarget

冒泡前的当前触发事件的DOM对象, 等同于
this

$("p").click(function(event) {
alert( event.currentTarget.nodeName );
});
结果:P

pageX/Y

鼠标事件中, 事件相对于页面原点的水平/垂直
坐标.

$("a").click(function(event) {
alert("Current mouse position: " + event.pageX + ", "
});

result

上一个事件处理函数返回的值

$("p").click(function(event) {
return "hey"
});
$("p").click(function(event) {
alert( event.result );
});
结果:"hey"

timeStamp 事件发生时的时间戳.

var last;
$("p").click(function(event) {
if( last )
alert( "time since last event " + event.timeStamp);
last = event.timeStamp;
});

 

上面是jQuery官方文档中提供的event对象的属性. 在"jQuery实战"一书中还提供了下面的多浏览器支持的属性, 大家可以验证是否在所有浏览器下可用:

属性名称 描述  
altKey Alt键是否被按下. 按下返回true  
ctrlKey ctrl 键是否被按下, 按下返回true  
metaKey

Meta键是否被按下, 按下返回true.
meta键就是 PC机器的Ctrl 键,或者Mac 机器上面的Command

 
shiftKey Shift键是否被按下, 按下返回true  
keyCode

对于keyup和keydown事件返回被按下的键. 不区分大小写, a和A都返回65.
对于keypress事件请使用which属性, 因为which属性跨浏览时依然可靠.

 
which

对于键盘事件, 返回触发事件的键的数字编码. 对于鼠标事件, 返回鼠标按键号(1左,2中,3右).

 
screenX/Y 对于鼠标事件, 获取事件相对于屏幕原点的水平/垂直坐标  

 

事件对象除了拥有属性, 还拥有事件. 有一些是一定会用到的事件比如取消冒泡 stopPropagation() 等.

下面是jQuery事件对象的函数列表:

名称 说明 举例
preventDefault()

取消可能引起任何语意操作的事件. 比如元素的href链接加载, 表单提交以及click引起复选框的状态切
换.

$("a").click(function(event){
event.preventDefault();
// do something
});

isDefaultPrevented()

是否调用过 preventDefault() 方法

$("a").click(function(event){
alert( event.isDefaultPrevented() );
event.preventDefault();
alert( event.isDefaultPrevented() );
});

stopPropagation() 取消事件冒泡

$("p").click(function(event){
event.stopPropagation(); )

// do something
});

stopImmediatePropagation()

取消执行其他的事件处理函数并取消事件冒泡.
如果同一个事件绑定了多个事件处理函数, 在其中一个事件处理函数中调用此方法后将不会继续调用其他的事件处理函数.

$("p").click(function(event){
event.stopImmediatePropagation();
});
$("p").click(function(event){
// This function won't be executed
});

isImmediatePropagationStopped()

是否调用过
stopImmediatePropagation(
)
方法

$("p").click(function(event){
alert( event.isImmediatePropagationStopped());

event.stopImmediatePropagation();
alert( event.

isImmediatePropagationStopped());

});

 

这些函数中 stopPropagation() 是我们最长用的也是一定会用到的函数. 相当于操作原始event 对象
的event.cancelBubble=true来取消冒泡.

分享到:
评论

相关推荐

    多线程事件对象通讯

    "多线程事件对象通讯"的示例,如`vc技术内幕11章例子`所示,深入探讨了如何在Visual C++(VC)环境下利用事件对象进行线程间的交互。 事件对象有三种状态:信号状态(Signaled State)和非信号状态(Non-Signaled ...

    第2章_Excel重要对象与事件

    除了对象的操作,本章还会介绍工作簿和工作表的事件,例如Workbook_Open、Worksheet_Change等,这些事件可以根据用户的操作自动执行VBA代码,实现与用户的交互。 在学习和使用Excel VBA时,掌握这些对象和事件能够...

    use_work_thread.rar_事件对象

    事件对象的创建通常使用CreateEvent函数,该函数接受四个参数,分别是事件的初始状态、是否自动重置、事件名(如果需要进程间同步)以及句柄的默认所有权。自动重置事件在被设置后,仅允许一个等待线程继续执行,...

    C#移除所有事件绑定的方法

    `test` 函数中订阅了四个事件处理方法(`add` 和 `sub` 各两次),然后调用 `clear_event` 清除所有绑定。这样,`DelTestEventHandler` 就不再有任何订阅的方法。 总结起来,C# 移除所有事件绑定的关键在于获取事件...

    windows笔记-【内核对象线程同步】事件内核对象[借鉴].pdf

    事件对象主要用于在一个线程完成特定操作后,通知其他线程可以继续执行。本文将深入探讨事件内核对象的特性、创建、使用以及线程同步的应用。 事件内核对象有两种类型:人工重置事件和自动重置事件。它们的主要区别...

    C++事件(event)

    - 当创建具有相同名称的事件时,需要确保系统中不存在同名的事件对象,否则`CreateEvent`函数将返回错误代码`ERROR_ALREADY_EXISTS`。 - 在使用事件对象时,需要确保正确地释放资源,避免内存泄漏等问题。 - 使用...

    C#面向对象:委托及事件.pdf

    #### 四、何时使用委托和事件 - **使用委托:** - 当需要将一个方法作为参数传递给另一个方法时。 - 当需要动态地决定执行哪个方法时。 - **使用事件:** - 当需要在对象间建立一种解耦的通信机制时。 - 当需要...

    Java事件处理机制- 事件监听器的四种实现方式

    Java事件处理机制是Java GUI编程中的核心组成部分,它允许用户与界面元素进行交互。事件监听器是这一机制的关键,用于响应特定类型的事件。本文将详细解析Java事件处理机制中事件监听器的四种实现方式:自身类作为...

    EventSample_C#事件范例_thereb9a_事件_事件触发_

    四、事件的最佳实践 1. 使用EventArgs:通常,事件处理程序需要一些关于事件的信息。为此,我们继承自`EventArgs`类创建自定义类,来传递这些数据。 2. 遵循.NET命名约定:事件名通常是动词+名词,如`Click`、`...

    事件ID1030 Windows 不能查询组策略对象列表

    ### 事件ID1030:Windows 不能查询组策略对象列表 #### 一、问题概述 在Windows系统中,可能会遇到一个特定的错误事件,该事件被标识为“事件ID1030:Windows 不能查询组策略对象列表”。这一问题通常与系统配置...

    vc++ multithread多线程教程---线程通信--利用事件对象,线程同步--使用信号量,线程同步--使用互斥量,线程同步--使用临界区

    本教程将深入探讨四种常见的线程同步机制:事件对象、信号量、互斥量以及临界区,帮助开发者理解和掌握如何在VC++中安全地实现多线程通信。 一、事件对象 事件对象是Windows API中用于线程间通信的一种同步机制。它...

    C#事件实例,C#事件实例,C#事件实例

    四、订阅事件 订阅事件是将事件处理方法与事件关联的过程。在类的实例中,可以使用`+=`运算符来订阅事件。例如: ```csharp Publisher publisher = new Publisher(); publisher.MyEvent += HandlerMethod; // 订阅...

    JAVA事件监听器的四种实现方式

    JAVA事件监听器的四种实现方式 JAVA事件监听器是JAVA语言中的一种机制,它允许程序员在特定的事件发生时执行某些操作。事件监听器的实现方式有多种,本篇文章将介绍四种常见的事件监听器实现方式:自身类作为事件...

    用事件实现简单的四则运算

    在编程领域,事件是软件系统中一种非常重要的概念,它涉及到用户交互、系统状态变化以及对象间的通信。本文将深入探讨如何使用事件来实现简单的四则运算,这将帮助我们理解事件驱动编程的核心原理。 首先,事件是...

    java类与对象实例

    "java类与对象实例" 在 Java 中,类和对象是两个紧密相连的概念。类是一种蓝图,用于创建对象,而对象是类的一个实例。类描述了对象的基本结构,包括属性、方法和事件等。类设计的关键概念包括封装、继承和多态。 ...

    C#--委托和事件

    #### 四、触发事件 当某个特定条件满足时,我们可以触发事件。触发事件的基本方式是调用事件名并传入事件处理程序的参数。例如: ```csharp // 假设已经有一个事件处理程序注册到EventName上 if (EventName != ...

    使用JavaScript事件综合查询,js事件大全

    每个事件触发时都会创建一个事件对象,其中包含了关于事件的信息,如事件类型、目标元素、鼠标位置等。在事件处理程序中,这个对象通常作为第一个参数传递,如`function(event) {...}`。 六、阻止默认行为与停止...

    Qt事件机制浅析

    #### 四、事件与信号的区别 在Qt中,事件和信号有着不同的作用和用途: - **事件**:用于实现对象的基本行为,如响应用户的输入或系统的通知。事件是底层机制,主要用于处理基本的交互逻辑。 - **信号**:用于对象...

    flex的事件详解

    #### 四、事件对象与处理机制 在ActionScript 3.0中,每个事件都由一个事件对象表示,通常是一个`Event`类或其子类的实例。事件对象包含了事件的详细信息,如事件类型、时间戳等,并提供了一系列方法供开发者使用。...

    C++中建立对象间消息连接的系统方法

    四、回调对象和事件对象 在这个系统中,回调对象和事件对象都是重要的概念。回调对象是指处理事件的对象,而事件对象是指发生事件的对象。事件对象需要向回调对象发送消息,请求它们进行某些处理。 五、CallBack类...

Global site tag (gtag.js) - Google Analytics