javascript - 将 Javascript 对象绑定(bind)到 HTML 元素

标签 javascript jquery html data-binding

我只是想和大家分享一个经验。所以我的问题是,我遇到了将 javascript 后端对象绑定(bind)到 HTML 前端元素的问题。现在,我通过谷歌搜索并阅读了一些关于这个问题的 stackoverflow 文章,许多帖子对此的回答是使用 jQuery.data() ,但是在我的第一次尝试中我没有成功,因为我对 jQuery 的对象创建方法有些不了解。我的问题是,我想在我存储它的范围之外检索存储的数据,并且 jQuery 总是(我认为)在我编写 jQuery('selectorID') 时返回一个新的对象引用。例如:

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 对象全局绑定(bind)到 HTML 元素并且正在考虑使用 jQuery 的 data() 方法,请将数据存储在返回的引用中通过 javascript 的内置 getElementById() 。这样,无论您在何处使用 getElementByID 检索引用您将始终获得相同的引用,并且可以使用 jQuery 的 data() 方法从中获取数据。

我的问题:

  1. 我的思维逻辑好吗?
  2. 是否有更好的方法将 javascript 对象全局绑定(bind)到 HTML 元素?

最佳答案

无论您提到无法运行的代码背后的原因是什么,绝对不是事实是 jQuery 为您的每个查询提供了一个新集合。给定 HTML:

<div id="somediv"> foo bar </div>

以下 Javascript works as expected :

var $ref1 = $('#somediv');
var $ref2 = $('#somediv');

console.log("$ref1:", $ref1);
console.log("$ref2:", $ref2);

// compare the collections / references
console.log("$ref1 == $ref2:", $ref1 == $ref2); // => false
console.log("$ref1 === $ref2", $ref1 === $ref2); // => false

// compare the referred DOM elements themselves
console.log("$ref1[0] == $ref2[0]:", $ref1[0] == $ref2[0]); // => true
console.log("$ref1[0] === $ref2[0]", $ref1[0] === $ref2[0]); // => true


$ref1.data('somedata', 'SOMEDATA');
console.log('$ref1->somedata:', $ref1.data('somedata')); // => SOMEDATA
console.log('$ref2->somedata:', $ref2.data('somedata')); // => SOMEDATA

关于javascript - 将 Javascript 对象绑定(bind)到 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15322467/

相关文章:

javascript - 如何使用 jQuery 在 load() 之前将加载 div 居中?

javascript - 使用 Greasemonkey 根据其内容更改 html 表格单元格格式

javascript - 计算表中的行数,如果大于 0,则显示表

javascript - getimagedata 在 Firefox 中不起作用

javascript - 如何在此脚本中淡入查询中的结果

javascript - 是否可以让用户使用 javascript/php 或类似的东西修改 html 文件的元素?

javascript - 使用 JavaScript 刷新 DIV 失败

javascript - 获取数据列表中所选项目的 ID

javascript - SOAP-Request 可与 PHP 一起使用,但与 NodeJS 一起抛出语法错误

javascript - currDateStart.format 不是函数