jQuery.active函数

Rya*_*P13 101 jquery

我试图找到有关以下jQuery函数的更多信息:

jQuery.active
Run Code Online (Sandbox Code Playgroud)

它被描述为测试到服务器的活动连接的数量,并且当连接数为零时将评估为真.

我在jQuery网站上找不到关于此功能的任何信息,并且想知道是否有人知道我在哪里.

Nic*_*ver 161

这是一个变量jQuery在内部使用,但没有理由隐藏,所以它可以使用.只是一个抬头,它成为jquery.ajax.active下一个版本.没有文档,因为它暴露但没有在官方API中,很多东西实际上都是这样的,就像jQuery.cache所有的东西一样jQuery.data().

我猜这里由实际在库的使用,它似乎是有专门支持$.ajaxStart()$.ajaxStop()(我将进一步解释),但只有当它是0或没有时请求启动或停止在意.但是,因为没有理由掩盖它,它暴露在可以看到的实际数量同时 AJAX请求目前正在进行.


当jQuery启动一个AJAX请求时,会发生这种情况:

if ( s.global && ! jQuery.active++ ) {
  jQuery.event.trigger( "ajaxStart" );
}
Run Code Online (Sandbox Code Playgroud)

这是导致$.ajaxStart()事件触发的原因,连接数从0变为1(jQuery.active++在此之后不是0,并且!0 == true),这意味着当前同时发出的第一个请求.同样的事情发生在另一端.当AJAX请求停止(由于一个beforeSend通过中止return falseAJAX调用complete函数运行):

if ( s.global && ! --jQuery.active ) {
  jQuery.event.trigger( "ajaxStop" );
}
Run Code Online (Sandbox Code Playgroud)

这是导致$.ajaxStop()事件触发的原因,请求数下降到0,这意味着最后一次同时进行的 AJAX调用已完成.在全球其他AJAX处理火在那里沿途为好.

  • 现在称为`$ .active`,顺便说一句. (25认同)
  • 我在一本书中描述了jQuery Novice to Ninja(2010) (2认同)
  • @RyanBigg不是$仅仅是jQuery的别名,所以两者仍然是正确的吗? (2认同)
  • @ArxPoetica仅当您运行不带noConflict的jQuery时。 (2认同)

Sea*_*ter 19

对于任何试图使用jQuery.active和JSONP请求的人(就像我一样),你需要启用它:

jQuery.ajaxPrefilter(function( options ) {
    options.global = true;
});
Run Code Online (Sandbox Code Playgroud)

请记住,您需要在JSONP请求上超时以捕获故障.

  • 使用此方法为JSONP启用$ .active的+1,它可以正常工作! (2认同)