数百万的div与类.clickable
用户变成野蛮人并点击视线中的每个div
这被认为是内存泄漏......
如果是这样......
我需要注射什么代码来阻止它
var body = $('body');
var clickme = '.clickable';
body.find(clickme).click(function() {
var $this = $(this);
$this.addClass($this.data('add-class'));
});

/* whatever the class click-number css is suppose to be*/

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-add-class="click1" class="clickable"></div>
<div data-add-class="click2" class="clickable"></div>
<div data-add-class="click3" class="clickable"></div>
…
…
<div data-add-class="click500000" class="clickable"></div>
<div data-add-class="click500001" class="clickable"></div>
<div data-add-class="click500002" class="clickable"></div>
<div data-add-class="click500003" class="clickable"></div>
…
…
<div data-add-class="click1000000" class="clickable"></div>
<div data-add-class="click1000001" class="clickable"></div>
<div data-add-class="click1000002" class="clickable"></div>
<div data-add-class="click1000003" class="clickable"></div>
&#13;
答案 0 :(得分:5)
它不是内存泄漏,但它是内存浪费。用户点击无关紧要;将一个点击监听器附加到每个对象的事实使它成为浪费。相反,请听一个祖先元素(或document
,如果你不能识别一个共同的祖先):
$(document).on('click', '.clickable', function(evt) {
...
});
顺便说一下,内存泄漏就是每次用户点击时,你会分配更多你以后不会自由的内存。谢天谢地,你不这样做。
答案 1 :(得分:1)
我在这里没有看到任何问题,也没有内存泄漏。
来自维基百科比较&#34; 内存泄漏&#34;反对&#34; 空间泄漏&#34;:
当计算机程序使用的内存超过时,会发生空间泄漏 必要。与泄漏内存泄漏的内存泄漏相反 从未发布,空间泄漏消耗的内存被释放,但是 比预期的要晚。
如果您有数百万个div,浏览器将需要一个明显的漫长等待时间来加载,并且需要显着的漫长等待时间来呈现,以及在每次点击时附加事件监听器的显着漫长等待时间。
您的代码很好,不用担心任何事情。 (除非你真的使用了数百万的div)。
所以回答你的问题&#34;这被认为是内存泄漏了吗?&#34;:否。