我可以确定页面上jQuery对象的数量吗?
我想使用元素的数量作为页面复杂性的一种弱基准。我想如果我可以减少jQuery知道的元素数量,页面可能会更有效地运行。
这有意义吗?
是否像执行* select和计算结果一样简单?
:
How can I clear content without getting the dreaded “stop running this script?” dialog?
答案 0 :(得分:4)
var elementCount = $('*').size();
虽然这可能更符合您的要求:
var elementCount = $('body').find('*').size()
答案 1 :(得分:3)
var n= 0;
for (var i in jQuery.cache)
n++;
现在n
包含jQuery已“触摸”的元素数量(向事件处理程序添加数据)。
以前这曾经是一大堆,因为它会“触摸”每个元素甚至检查的数据。这种不愉快在jQuery 1.4中得到修复。
至于清除内容,是的,您可以使用innerHTML= ''
删除所有内容,而不会让jQuery有机会非常缓慢地分离其数据。如果您知道元素内部没有“触及”元素,那么在重新加载页面之前,这是一个潜在的内存泄漏,因为未使用的jQuery.cache
数据会保留。
使用live()
/ delegate()
事件绑定可以避免向目标元素添加数据,这可以让您更自由地使用此快捷方式。但是,如果要绑定很多事件,并且它们不是很容易快速匹配的选择器,则会使事件处理变慢。
(因为没有像querySelectorAll
这样的浏览器原生加速,可以根据委托需要来匹配特定选择器的元素;这是针对Selectors-API级别2提出的。)
答案 2 :(得分:0)
var elementCount = $('*').length;
这与jQuery没什么关系,只要它是一种方便的方式来获得答案。