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

Chr*_*ati 3 jquery events

我正在使用jQuery向扩展对象添加事件 jQuery.extend();

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

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

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

现在我被阻止,因为我需要找到一种方法来仍然访问相同的变量,但因为名称是随机的,我需要一种方法来动态访问它.

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

Nic*_*ver 7

这些数字并不像它们看起来那样随机,它们是expando属性,可以通过jquery.expando或者访问$.expando.数字Date().getTime()是加载页面时的时间戳(),以便不与任何其他属性冲突.

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

$.expando === "jQuery151023621073900721967"
Run Code Online (Sandbox Code Playgroud)

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

var events = $("mySelector").data("events");
Run Code Online (Sandbox Code Playgroud)

.data(),.bind()等所有使用该属性在内部,它只是用于在元件中具有数据的密钥$.cache对象,该属性的值是关键$.cache.例如,要获取元素的所有数据,事件等,它在原始形式中看起来像这样:

var data = $.cache[element[$.expando]]
Run Code Online (Sandbox Code Playgroud)