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请求时,你们如何显示一个简单的指标?

正如你在你的问题:)