PostBack后Document.Ready()无效

The*_*max 34 javascript c# asp.net jquery user-controls

我有一个页面,其中包含更新面板中的用户控件.$(document).ready(function() ) {是所谓的正确执行代码时的页面加载首创,但如果用户点击一个按钮(用户控制范围内),将document.ready()不会被调用(document.load,onload也不工作)

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

El *_*oco 47

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

function doSomething() {
   //whatever you want to do on partial postback
}

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(doSomething);
Run Code Online (Sandbox Code Playgroud)

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

  • 它应该是`Sys.WebForms.PageRequestManager.getInstance().add_endRequest(doSomething);` (2认同)
  • 它是 Javascript - 它是加载的 Microsoft Ajax JS 库的例程 (2认同)

ted*_*ski 28

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

它会ScriptManager在页面上自动调用,即使在回发时也是如此.


pha*_*phy 15

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

Sys.Application.add_load(function() {
Run Code Online (Sandbox Code Playgroud)

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

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


Pra*_*ana 10

Bestest方式是

<asp:UpdatePanel...
<ContentTemplate
     <script type="text/javascript">
                    Sys.Application.add_load(LoadScript);
     </script>
 you hemla code gose here 
</ContentTemplate>
    </asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

Javascript功能

<script type="text/javascript">

        function LoadScript() {
            $(document).ready(function() {

                   //you code gose here 
                                    });
         }
</script>
Run Code Online (Sandbox Code Playgroud)

要么

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

ScriptManager.RegisterClientScript
Run Code Online (Sandbox Code Playgroud)

要么

$(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 
}
Run Code Online (Sandbox Code Playgroud)