PostBack后,Document.Ready()无效
我有一个页面,其中包含更新面板中的用户控件。 $(document).ready(function() ) {
被调用并在页面第一次加载时正确执行代码但是如果用户单击按钮(在用户控件内),则不会调用document.ready()
( document.load
, onload
也行不通)
我在网上研究了这个并发现了类似的问题,但没有什么可以解释为什么这不起作用。 还有什么其他原因可以用于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,这种情况正在发生。 只需将回发触发器放到按钮上即可解决此问题。