什么是DOM对象的反向引用?

时间:2010-04-19 17:53:11

标签: javascript jquery

在此链接中:http://css-tricks.com/snippets/jquery/jquery-plugin-template/它有一行代码

// Add a reverse reference to the DOM object
base.$el.data("yourPluginName", base);

“对DOM对象的反向引用”是什么意思?

2 个答案:

答案 0 :(得分:2)

假设你知道jQuery数据函数:

它在jQuery的数据缓存中存储对该类实例的引用,这意味着存储的实例可用于访问初始base对象如果它在当前上下文中不可用

这样,类实例可以在以后使用。 但是,在创建实例的初始类中使用prototype关键字将修改实例。


修改

哎呀,似乎Anurag是对的,我提供了错误的信息 抱歉,我在初步回答中提供的信息并不完全正确。我已经更新了答案,现在说实话 在你要求的评论中:

  

所以你的意思是它将“base”的当前状态存储在数据缓存中,但是如果我们稍后对“base”进行更改,那么数据中的那个将不会受到影响?所以如果由于某种原因我们需要再次获得原始数据,我们可以做数据('yourPluginName')来检索它?你能举个例子说明这会有什么帮助吗?

似乎没有一个陈述是正确的。

正如我明显记得不够,data中存储的东西只是对象的引用:

var obj = {};
obj.hello = "Hello";
$("#someElement").data("object", obj);
obj.world = " world.";
alert(
  obj.hello + 
  $("#someElement").data("object").world
); // alerts "Hello world."

BTW,名称如此base的JavaScript变量 - 事物(通常被视为that或类似的东西)通常用于表示当前上下文,通过this访问关键字,由于范围/上下文更改,在很多情况下更容易存储在另一个变量中,这将使当前上下文因此this更改。

同样由于上下文问题,data中的存储值可用于从另一个上下文访问特定对象实例(即this代表其他内容时),而不是版本存储了副本之后不断使用的base对象。

我希望这能回答你的问题:D

答案 1 :(得分:0)

它解决的技术和问题是一般的,不是特定于jQuery插件。可能存在Javascript对象对应于DOM元素并且包装特定于该DOM元素的逻辑的情况。此对象可能对监听该DOM元素中发生的点击等事件感兴趣。我们在这些回调中获得的信息是触发它的元素,而不是关联的对象。您可以使用jQuery的data API或任何类型的地图来检索相应的对象,并使用它做一些事情。