javascript - 在 JS 对象中引用 HTML 元素

标签 javascript jquery html css

当我使用 JQuerys 动态创建一个元素时:

$("<div>",{id : "list"}).html("hello").appendTo("body");

并使用以下方法创建一个 JS 对象:

var obj = {el : document.querySelector("#list") }

打印时控制台返回以下内容 obj.el正如预期的那样:

<div id="list">hello</div>

现在我可以使用 obj.el.innerHTML = "foo"; 设置内容 删除元素后使用:

$("#list").remove();

元素保留在之前创建的对象obj中。打印obj.el仍然返回:<div id="list">hello</div>

首先,为什么会这样? 有没有一种方法可以存储对元素的偏好而不存储复杂的嵌套 CSS 选择器,这会减慢速度?

最佳答案

阅读这个我认为可以帮助你的小例子。

// it would be in you code : $("<div>",{id : "list"}).html("hello").appendTo("body");
var obj = {
  a : 5
};

// let me create this object to better undersatnding
var obj2 = {
  a : 3
};

document.write(obj.a + "<br>"); // 5
document.write(obj2.a + "<br>"); // 3


// it would be in you code :var obj = {el : document.querySelector("#list") }
obj2.a = obj.a; //


document.write(obj2.a + "<br>"); // 5

//it would be in you code : $("#list").remove();
delete obj.a;

// here we still have something for obj2
document.write(obj2.a + "<br>"); // 5

// try again :
obj2.a = obj.a;
document.write(obj2.a + "<br>"); // undefined

在你的情况下,如果你尝试:

$("#list").remove();
var obj = {el : document.querySelector("#list") }

我认为 obj 将是未定义的!

关于javascript - 在 JS 对象中引用 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33197448/

相关文章:

c# - Jquery 是未定义的错误

javascript - KineticJS:何时使用 toImage() 以及何时使用 cache()

javascript - 为什么一个简单的 &lt;script src ="..."> &lt;/script&gt; 不起作用?

jquery - 单击正文时折叠导航菜单

javascript - 尝试呈现 "loading"提示,但数据一旦准备好

javascript - 将 FullCalendar 事件填充为数组 - 从另一个数组填充

javascript - Div 行为不稳定。关于崩溃和崩溃

javascript - 如何用动画填充 Canvas 形状?

javascript - 在后台对网站进行高效轮询? (Firefox 插件 SDK)

javascript - JavaScript 中按特定键对对象数组进行排序的最紧凑方法是什么,其中排序顺序是在数组中定义的?