Javascript 提高jQuery性能的一些快速技巧是什么?

Javascript 提高jQuery性能的一些快速技巧是什么?,javascript,jquery,performance,Javascript,Jquery,Performance,提高jQuery性能的一些快速技巧是什么?参考文件以加快加载速度。Paul Irish最近在2009年jQuery会议上做了一个性能演示。这些幻灯片是我见过的最全面的幻灯片之一 而不是做: $("#foo").addClass('test'); $("#foo").removeClass("bar"); $("#foo").slideUp('slow'); 你可以做: $("#foo").addClass('test').removeClass('bar').slideUp('slow');

提高jQuery性能的一些快速技巧是什么?

参考文件以加快加载速度。

Paul Irish最近在2009年jQuery会议上做了一个性能演示。这些幻灯片是我见过的最全面的幻灯片之一


而不是做:

$("#foo").addClass('test');
$("#foo").removeClass("bar");
$("#foo").slideUp('slow');
你可以做:

$("#foo").addClass('test').removeClass('bar').slideUp('slow');

提高jQuery的速度实际上是不可能的,这取决于代码的效率、浏览器的JS解释器的效率以及运行代码的计算机的速度。您也许可以尝试重写jQuery以提高效率,但这需要时间,而且很可能已经进行了优化。

确保效率的最佳方法之一是确保*选择器尽可能针对元素/类等

*$(选择器)

  • 首选简单选择第一个仅通过ID,第二个仅通过标记名。按类名或CSS选择器选择需要jQuery遍历DOM,而ID和标记映射到“本机”浏览器DOM函数(getElementById和getElementByTagName)
  • 尽可能多地缓存jQuery对象
  • 范围您对根jQuery对象的操作。不要单独选择元素,而是选择一个公共祖先元素,并使用
    find
    函数查找该元素子元素范围内的元素。只有在对公共祖先执行某些操作时,这才是真正的最佳选择;否则,查找祖先和缓存祖先的开销可能会超过作用域遍历的好处
  • 不要使用
    $。each()
    用于(;;)
    。速度快了十倍多

  • 它总是适用于普通javascript:总是缓存,缓存,缓存 e、 g:


    知道何时使用普通JavaScript而不是JQuery方法。

    jQuery是对JS+DOM的补充,而不是它的完全替代品。您不必对编写的每一行代码都使用jQuery。没有它,有些东西表达得更简洁;没有它,很多事情都会更快。了解DOM提供了什么,这样你就不会写一些我在这里看到的更愚蠢的例子

    例如:

    更快、更易于阅读,不会在ID中出现意外字符:

    var ix= document.getElementById(selectname).selectedIndex;
    

    我想你是在要求代码优化,但由于性能在很大程度上取决于所使用的JavaScript引擎,我想提一下。

    购买一台新电脑是显而易见的方式:-)我想你可以通过搜索找到这个问题的多个重复项。在你的电脑侧面放上竞速条纹,这总是有帮助的。然后把它涂成红色!红色的最快!这真的提高了性能吗?这太糟糕了。或者,如果你不能一次完成这一切,就把$(“#foo”)放在一个变量中,然后使用它,而不是每次都重新创建$(“#foo”)。@jpartogi:jQuery在你每次将选择器传递到$()时都会创建一个新对象,但因为它的方法返回
    this
    你可以像那样堆叠它们。这里的诀窍是不要为同一个选择器创建三个不同的对象。如果你在速度上看到了巨大的提高,这是正确的。然而,有一些简单的技巧确实有助于更好的执行,即使它只有100毫秒左右。这不是jQuery的真正性能,不是吗?如果您在内部网上开发(用户在同一大楼中),这将不适用。将其存储在您自己的服务器上可以节省他们访问internet的时间。@Nathan在intranet上,这将是存储在代理上的一种方式,因此也可以为他们节省一次访问时间,但请接受您的观点,有些地方不会有代理这应该是公认的答案+1您能给出for(;)的一个例子吗?这里是jQuery文档[]中$.each()的一个例子的基于for(;)的版本:for(var i=0;ivar ix= $('#'+selectname).children().index($('#'+selectname+' option:selected'));
    var ix= document.getElementById(selectname).selectedIndex;