如何在jQuery中触发$()。ready()?

使用jQuery,有没有办法在页面加载后重新触发document.ready触发器?

更新:jQuery一旦运行就会脱掉它们。 在我的实验中,一旦初始ready事件被触发,jQuery将在遇到它时运行一个().ready回调。

如果您只需确保运行新的初始化函数,则无需执行任何操作。 在$().ready添加新的事件处理程序时,在文档完成加载后,它将立即运行。

显然,直接调用$().trigger("ready")是行不通的,因为jQuery在运行它们后会重置ready事件处理程序。 您需要跟踪需要呼叫的function,并直接调用它们,如下所示。

当然,直接调用函数可能会更好,所以你不要重新运行你不想要的东西(某些插件可能有自己的$()。ready()函数,他们不期望跑两次)。

 $().ready(initializationFunction); // later: initializationFunction(jQuery); 

你可以这样做:

 $(document).on('ready readyAgain', function() { // do stuff }); // At some other point in time, just trigger readyAgain $(document).trigger('readyAgain'); 

注意:

$(document).on('ready')已在jQuery 1.8中弃用。 另一种方法如下:

 function myReadyFunction(){} $(myReadyFunction); // at some other point, just call your function whenever needed: myReadyFunction($); 

如果您尝试将模块执行控制器直接构建到就绪函数中,该怎么办? 有点像这样:

https://gist.github.com/miguel-perez/476046a42d229251fec3

亚伦 – 你想要完成什么,重新初始化变量?

编辑…在我看来,jQuery的美妙之处在于回调function。 为什么不在事件发生后执行一些动作/function。

在某些情况下,您需要在代码的其他位置添加更多代码(脚本),因此创建函数会限制您在同一区域中编写所有代码。 这就是为什么我更喜欢添加自定义事件,然后触发它们:

 //Add a page Ready custom event $( document ).on( "page.ready", function( event ) { //Your Ready Scripts }); //Add a page Load custom event $( document ).on( "page.load", function( event ) { //Your Load Scripts }); //Trigger Ready scripts on page ready jQuery(function($) { $( document ).trigger( "page.ready" ); }); //Trigger Load scripts on page load $(window).load(function () { $( document ).trigger( "page.load" ); }); //Trigger the Custom events manually $( document ).trigger( "page.ready" ); $( document ).trigger( "page.load" ); 

https://learn.jquery.com/events/introduction-to-custom-events/

我可以看到一个场景,这将是非常有用的,即如果你延迟加载jQuery直到其他所有加载,然后你动态附加一个新的脚本元素来加载jQuery。

在这种情况下,$(document).ready并不总是被触发,因为在很多情况下,文档将在jQuery完成加载之前完全加载并设置了正确的事件处理程序。

您可以使用命名函数并调用它们,但它仍然会破坏任何依赖于$(document).ready的插件。

如果它可以帮助你:

 var document_on_ready = new Array(); function on_ready(){ for(i=0;i 

简单:你只需要禁用安全标志jQuery.isReady。 将jQuery.isReady设置为false并使用jQuery(document).trigger(’ready’)重新触发此事件。 这对于turbolinks风格的导航非常有用。

ASP.Net UpdatePanel部分页面加载是另一个可能需要重新触发加载function的地方 – 而不是$().ready是正确的地方。 在这种情况下,您可以使用page_load或MS框架的endrequest事件。

你应该能够使用document.ready.apply();