使用jQuery.extend()时如何正确访问事件

时间:2011-04-21 18:39:10

标签: jquery events

我使用jQuery.extend();

在jQuery中向扩展对象添加事件

使用jQuery 1.4.4,我访问了一个名为__events__的属性,我可以以可预测的方式访问它,以便添加我自己的事件挂钩。

在检查jQuery 1.5.1对象时,我注意到在使用extend函数时在对象上创建了一个随机属性。

该属性具有以下格式:jquery151******************(其中*是随机生成的数字)。

现在我被阻止了,因为我需要找到一种方法来访问同一个变量,但由于名称是随机的,我需要一种方法来动态访问它。

jQuery是否提供了这样做的方法?如果没有,添加事件挂钩的最佳方式是什么?

1 个答案:

答案 0 :(得分:7)

这些数字并非随机显示,they're the expando property, it's accessible via jquery.expando or $.expando。这些数字是加载页面时的时间戳(Date().getTime()),以免与任何其他属性冲突。

例如,在本回答时,在此页面中:

$.expando === "jQuery151023621073900721967"

然而,这些是更干净的方式来做你正在做的事情,例如events集合可以通过.data()访问,如下所示:

var events = $("mySelector").data("events");

.data().bind()等都在内部使用此属性,它只是元素在the $.cache object中的数据位置的键,该属性的值是{{{3}}中的键。 1}}。例如,要获取元素的所有数据,事件等,它将以原始形式显示:

$.cache