jQuery全局事件和性能?

我正在寻找一种使用jQuery显示状态指示器的方法,我在jQuery Cookbook中找到了一个解决方案,它显示了这个解决方案
(function($) {
    $(document).ready(function() {
       $('#ajaxStatus')
         .ajaxStart(function() {
            $(this).show();
        })
         .ajaxStop(function() {
            $(this).hide();
        });

        .....
  })(jQuery);
然后它警告说,   如果您在应用程序中遇到性能问题,可能是因为   事件传播的成本如果有很大的话   元素数量。在这种情况下,将global设置为false可能会给您   性能提升。 首先,我应该使用上面显示的解决方案,这将是一个性能问题,因为我的网站和js代码变得越来越大? 我应该避免jQuery全局事件,只需将其关闭就像段落所说的那样? 最后,在执行ajax请求时,你们如何显示一个简单的指标?     
已邀请:
老实说,我认为这种谨慎是有效的,但与此同时,过时了。在这里查看jQuery源代码:http://github.com/jquery/jquery/blob/master/src/event.js#L290 它显示了现在如何处理全局事件:
if ( jQuery.event.global[ type ] ) {
  jQuery.each( jQuery.cache, function() {
    if ( this.events && this.events[type] ) {
      jQuery.event.trigger( event, data, this.handle.elem );
    }
  });
}
它曾经是:
jQuery("*").add([window, document]).trigger(type, data);
因此它不会触发像以前那样的每个元素,这会使大量元素警告一个非常真实的问题,而是循环遍历已注册或事件的元素,并且只有在已经注册的元素上,所以它在性能上要好得多现在。 对于你的问题:   首先,我应该使用上面显示的解决方案,这将是一个性能问题,因为我的网站和js代码变得越来越大? 是的,上面的解决方案很好,在我上面概述的全局事件优化之后,我还没有看到足够大的页面成为一个问题。   我应该避免jQuery全局事件,只需将其关闭就像段落所说的那样? 不,你可以在这个改变之后忽略该段落使用任何jQuery。   最后,在执行ajax请求时,你们如何显示一个简单的指标? 正如你在你的问题:)     

要回复问题请先登录注册