我可以确定页面上的jQuery对象的数量吗?如何确定页面上有多少个jQuery对象?
我想使用元素的数量作为页面复杂度的一种弱基准。我在想,如果我可以减少jQuery知道的元素数量,页面可能运行得更有效率。
这是否有意义?
就像做*选择和计算结果一样简单吗?
相关:
How can I clear content without getting the dreaded “stop running this script?” dialog?
我可以确定页面上的jQuery对象的数量吗?如何确定页面上有多少个jQuery对象?
我想使用元素的数量作为页面复杂度的一种弱基准。我在想,如果我可以减少jQuery知道的元素数量,页面可能运行得更有效率。
这是否有意义?
就像做*选择和计算结果一样简单吗?
相关:
How can I clear content without getting the dreaded “stop running this script?” dialog?
var elementCount = $('*').size();
虽然这可能是更多你想要什么:
var elementCount = $('body').find('*').size()
var elementCount = $('*').length;
这并不真的有很多工作要做,jQuery的,除了因为它是一种方便的方法来得到答案。
var n= 0;
for (var i in jQuery.cache)
n++;
现在n
持有元素的jQuery已经 '感动'(添加数据,如数量事件处理程序)。
此前,这曾经是一个很大的问题,因为它会'触摸'每个元素,即使是检查的数据。这个不愉快在jQuery 1.4中修复。
至于清理内容,是的,你可以使用innerHTML= ''
删除所有的内容,而不给jQuery有机会分离它的数据非常缓慢。如果你知道这个元素中没有'被触动'的元素,那么这是一个胜利,否则这是一个潜在的内存泄漏,直到页面被重新加载,因为未使用的数据仍然存在。
使用live()
/delegate()
事件绑定可避免将数据添加到其目标元素,这可以让您更自由地使用此快捷方式。但是,如果你有很多要绑定的事件,并且它们不是很容易匹配的选择器,这可能会导致事件处理变慢。
(因为没有浏览器的原生加速样querySelectorAll
所比对的代表团需要做一个特定选择的元素,这是提出了选择器,API等级2)
+1 - 我想知道有关。我知道jQuery向元素添加了一个序列号,但不知道jQuery引用它们的位置。 – user113716 2010-05-28 14:22:38
谢谢,非常有帮助。 – Cheeso 2010-05-28 14:50:26