PostBack后,Document.Ready()无效

我有一个页面,其中包含更新面板中的用户控件。 $(document).ready(function() ) {被调用并在页面第一次加载时正确执行代码但是如果用户单击按钮(在用户控件内),则不会调用document.ready()document.loadonload也行不通)

我在网上研究了这个并发现了类似的问题,但没有什么可以解释为什么这不起作用。 还有什么其他原因可以用于document.ready not working?

这将是部分回发的问题。 DOM不会重新加载,因此不会再次命中文档就绪函数。 您需要在JavaScript中分配部分回发处理程序,如此…

 function doSomething() { //whatever you want to do on partial postback } Sys.WebForms.PageRequestManager.getInstance().add_endRequest(doSomething); 

上面对add_endRequest调用应放在首次加载页面时执行的JavaScript中。

而不是$(document).ready你可以使用function pageLoad(){}

它由ScriptManager在页面上自动调用,甚至在回发时也是如此。

我刚刚遇到过这个问题,正如El Ronnoco所说,它必须与DOM没有重新加载。 但是你可以简单地改变$(document).ready(function() { to

 Sys.Application.add_load(function() { 

这将迫使它在每次回发时运行。

您也可以使用函数pageLoad(),但是您只能使用一个pageLoad函数,而使用Sys.Application.add_load,您可以根据需要添加任意数量的处理程序。

Bestest方式是

  Sys.Application.add_load(LoadScript);  you hemla code gose here   

Javascriptfunction

  

要么

它在UpdatePanel下比您需要再次注册客户端脚本使用

 ScriptManager.RegisterClientScript 

要么

 $(document).ready(function() { // bind your jQuery events here initially }); var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_endRequest(function() { // re-bind your jQuery events here loadscript(); }); $(document).ready(loadscript); function loadscript() { //yourcode } 

这是一个过去对我有用的例子:

  

下面的代码很好地解决了这个问题。 正如之前发布的链接( http://encosia.com/document-ready-and-pageload-are-not-the-same/ )所示,当你有一个带有updatePanels的asp.NET时,你应该使用函数pageLoad()。 当您只有一个页面并且在每个回发中它将完全重新加载时,$(document).ready()是正确的选项。

使用pageLoad的示例:

  function pageLoad() { $(".alteraSoVirgula").keyup(function () { code here }) } 

我也遇到了同样的问题,但我发现jQuery $(document).ready事件处理程序在页面加载时有效,但是在ASP.Net AJAX UpdatePanel Partial PostBack之后它没有被调用。 所以使用Sys.Application.add_load(function(){}); 而不是$(文件).ready。 这对我来说很完美:)

大多数情况下,由于Updatepanle,这种情况正在发生。 只需将回发触发器放到按钮上即可解决此问题。