jQuery性能、.css或addClass

jQuery性能、.css或addClass,jquery,css,addclass,Jquery,Css,Addclass,我有一个很大的jQuery代码,我正在考虑我的函数的快速性能。当一个元素被点击(mousedown)时,我需要指定一个图像作为背景。我可以通过两种方式来实现这一点: $('#element li.class').css({"background":"someimageURL"}); 或 其中“someclass”具有实际的CSS背景图像。 在这种情况下,Witch函数工作得更好 有没有办法测试各种功能的速度 谢谢我几乎可以肯定。addClass()将是这两种方法中速度更快的一种。这本质上涉及到

我有一个很大的jQuery代码,我正在考虑我的函数的快速性能。当一个元素被点击(mousedown)时,我需要指定一个图像作为背景。我可以通过两种方式来实现这一点:

$('#element li.class').css({"background":"someimageURL"});

其中“someclass”具有实际的CSS背景图像。 在这种情况下,Witch函数工作得更好

有没有办法测试各种功能的速度


谢谢

我几乎可以肯定
。addClass()
将是这两种方法中速度更快的一种。这本质上涉及到在元素上附加另一个类名,而另一种方法则需要迭代元素样式并设置许多显式规则

通过
$.css()
设置几个css规则可能没什么好担心的,但是如果您发现自己设置了很多,通常是时候创建一个类并根据需要应用/删除它了

我已经将这两种方法的逻辑提取到一个单独的位置,供您查看


添加类的速度绝对更快,请参见
$.addClass()
vs
$.css()
vs
$.removeClass().addClass()
vs plain js-

也与速度/性能无关,在以后更改样式时,更改css类要比更改js源代码容易得多;)“addClass”的实现并不像我想象的那么奇特。当添加多个类时,它会对类字符串进行大量的重新扫描。对于简短的类名值,这可能不是问题。我会看看你的链接。我还认为addClass速度更快。所以,你说“几乎肯定”而不进行任何测量?羞耻。而且,真正重要的是重画的性能,因此当您将一个类添加到多个元素时,您必须添加重新应用级联样式表所需的时间。而且,您似乎只关注jQuery性能的一部分,这只是冰山一角。事实上,如果您真的想要性能,那么应该完全去掉jQuery部分,并直接进行DOM操作。jQuery是一种通用工具,它可以快速编写代码,但几乎从来都不是最快的方式。如果您想要提高性能,您的jsperf肯定会告诉您,最重要的事情是跳过jQuery部分,直接将其编码到DOM中。用实际测量值回答性能问题,真是太好了!我不敢相信这个问题的公认答案没有实际测量。这在我的书中是一个耻辱。如果不进行测量,你根本无法可靠地回答性能问题。我认为用一个代替另一个是不明智的。使用.css方法将样式硬编码到DOM元素,如果您想摆脱样式(例如屏幕分辨率更改),这将是非常棘手的。但是.addClass和.removeClass方法可以很好地处理这个问题。
$('#element li.class').addClass("someclass");