【发布时间】:2013-03-10 12:55:07
【问题描述】:
我只是想和大家分享一个经验。所以我的问题是,我遇到了将 javascript 后端对象绑定到 HTML 前端元素的问题。现在,我通过谷歌搜索并阅读了一些关于这个问题的 stackoverflow 文章,许多帖子对此的回答是使用jQuery.data(),但是在我的第一次尝试中我没有成功,因为我不知道关于 jQuery 的对象创建方法。我的问题是,我想在我存储它的范围之外检索存储的数据,并且当我编写 jQuery('selectorID') 时,jQuery 总是(我认为)返回一个新的对象引用。比如:
var ref1 = $('#myID');
var ref2 = $('#myID');
if(ref1 == ref2)
{
alert(true);
}
else
{
alert(false);
}
总是会提示错误。然而,用 javascript 的内置 getElementById() 替换 jQuery 方法,我们将得到相同的参考!因此,以下代码将始终提示 true!
var ref1 = document.getElementById("myID");
var ref2 = document.getElementById("myID");
if(ref1 == ref2)
{
alert(true);
}
else
{
alert(false);
}
我的故事的一点小意思是,如果你想全局地将 javascript 对象绑定到 HTML 元素,并且正在考虑 使用 jQuery 的 data() 方法,请将数据存储在返回的引用上通过javascript的内置getElementById()。这样,无论您在何处检索引用,使用 getElementByID,您将始终获得相同的引用,并且可以使用 jQuery 的 data() 方法从中获取数据。
我的问题:
- 我的思维逻辑正常吗?
- 有没有更好的方法将 javascript 对象全局绑定到 HTML 元素?
【问题讨论】:
-
你的逻辑显然是错误的。虽然对
$()的多次调用会返回不同的选择器对象,但jQuery 方法通常对所选对象本身进行操作。因此,对.data()的调用将始终在您使用getElementById()获得的同一个DOM 元素上运行。 (您可以通过实际尝试而不是调查引用相等来确定。)
标签: javascript jquery html data-binding