我使用jQuery.extend()在jQuery中向扩展对象添加事件; 使用jQuery 1.4.4,我访问了一个名为__events__的属性,我可以以可预测的方式访问它,以便添加我自己的事件挂钩. 在检查jQuery 1.5.1对象时,我注
使用jQuery 1.4.4,我访问了一个名为__events__的属性,我可以以可预测的方式访问它,以便添加我自己的事件挂钩.
在检查jQuery 1.5.1对象时,我注意到在使用extend函数时在对象上创建了一个随机属性.
该属性具有以下格式:jquery151 ******************(其中*是随机生成的数字).
现在我被阻止,因为我需要找到一种方法来仍然访问相同的变量,但因为名称是随机的,我需要一种方法来动态访问它.
jQuery是否提供了这样做的方法?如果没有,添加事件挂钩的最佳方式是什么?
这些数字并不像它们出现的那样随机, they’re the expando property, it’s accessible viajquery.expando
or $.expando
.数字是加载页面时的时间戳(Date().getTime()),以免与任何其他属性冲突.
例如,在本回答时,在此页面中:
$.expando === "jQuery151023621073900721967"
但是,这些是更干净的方式来做你正在做的事情,例如事件集合可以通过.data()
访问,如下所示:
var events = $("mySelector").data("events");
.data()
,.bind()
等都在内部使用此属性,它只是元素在the $.cache
object中具有数据的键,该属性的值是$.cache中的键.例如,要获取元素的所有数据,事件等,它在原始形式中看起来像这样:
var data = $.cache[element[$.expando]]