数以百万计的div与同类.clickable
用户变成了一个野蛮人,点击了每一个div
这被认为是内存泄漏......
如果是这样…
我需要注入什么代码来阻止它
var body = $('body');
var clickme = '.clickable';
body.find(clickme).click(function() {
var $this = $(this);
$this.addClass($this.data('add-class'));
});Run Code Online (Sandbox Code Playgroud)
/* whatever the class click-number css is suppose to be*/Run Code Online (Sandbox Code Playgroud)
<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>Run Code Online (Sandbox Code Playgroud)
这不是内存泄漏,但它是一种内存浪费.用户点击无关紧要; 将一个点击监听器附加到每个对象的事实使它成为浪费.相反,请监听祖先元素(或者document,如果您无法识别单个共同祖先):
$(document).on('click', '.clickable', function(evt) {
...
});
Run Code Online (Sandbox Code Playgroud)
顺便说一句,内存泄漏将是每次用户点击时,你分配更多的内存,你以后不会释放.谢天谢地,你不这样做.
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |