【发布时间】:2015-12-13 08:59:19
【问题描述】:
window.a = {
div1: $('#div1'),
img1: $('#img1')
};
$(a.img1).click(function() {
a.div1.html('<img id="img2" src="https://www.gstatic.com/webp/gallery/2.sm.jpg" />');
$('#img2').click(function() {
$(a.img1).attr('src', 'https://www.gstatic.com/webp/gallery/3.sm.jpg');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="div1">
<img id="img1" src="https://www.gstatic.com/webp/gallery/1.sm.jpg" />
</div>
当第 9 行执行时,即第二次单击图像时$(a.img1).attr('src', 'https://www.gstatic.com/webp/gallery/3.sm.jpg');,a.img1 不应该存在。那么,为什么该 URL 的 HTTP 请求被发送到服务器(网络选项卡中的通知)?我正在使用 Chrome 版本 45.0.2454.85 m。不要认为这是一个浏览器错误。也适用于 Firefox 39。
【问题讨论】:
-
您已经从 DOM 树中删除了该节点,但它仍然存在,因为
window.img1仍然指向它 - 所以它不能被垃圾回收。 -
“为什么元素从 DOM 中移除后仍然可以访问?” 从
DOM中移除的元素在哪里? -
@guest271314
a.div1.html()应该删除它。不是吗? -
@IsmailS 是的,你是对的;从
DOM中删除,但仍然是window.a.img1处的jQuery 对象 -
如果你从酒店房间偷了遥控器,当你按下按钮时它仍然会闪烁灯,即使它不会对任何其他电视做任何事情......
标签: javascript jquery html events dom