【问题标题】:After Post Back my jQuery code not working回发后我的 jQuery 代码不起作用
【发布时间】:2015-07-22 23:01:27
【问题描述】:

我有服务器端按钮。第一次 jQuery 工作正常,但下一次 jQuery 没有工作。我在更新面板中使用 jQuery。

下面是我的 Jquery 代码。

<script type="text/javascript" src="../../js/jquery-ui-1.11.4.min.js"></script> 
<script type="text/javascript">            
(function ($) {
    $('.mv-spinner').spinner(), $('.mv-action').button(),
    $('.table-mv-vouchers').tooltip(), $('.table-mv-vouchers select').selectmenu() 
})(jQuery)
</script> 

我也在页面加载功能中使用了我的代码,但没有工作。

 protected void Page_Load(object sender, EventArgs e)
 {      
        Page.ClientScript.RegisterStartupScript(typeof(UpdatePanel), "scrg", "<script type='text/javascript' src='../../js/jquery-ui-1.11.4.min.js'></script>");
        Page.ClientScript.RegisterStartupScript(typeof(UpdatePanel), "scr", "<script type='text/javascript'>  (function ($) { $('.mv-spinner').spinner(), $('.mv-action').button(), $('.table-mv-vouchers').tooltip(), $('.table-mv-vouchers select').selectmenu() })(jQuery) </script>");
 }

我将如何解决这个问题?回发后 jQuery 不执行。提前致谢!

【问题讨论】:

    标签: c# jquery asp.net postback


    【解决方案1】:

    您的初始化将仅在文档准备就绪时运行(而不是在回发时)。由于您将控件放在 UpdatePanel 中,因此任何内容都会在回发后更新。

    试试下面的建议

    您需要在回发中重新创建 Jquery 代码,如下所示

    <script type="text/javascript"> 
        $(document).ready(function() {
            //jquery code
        });
    
        var parameter = Sys.WebForms.PageRequestManager.getInstance();
    
        parameter.add_endRequest(function() {
            //jquery code again for working after postback
        });
    </script>
    

    这是我遇到同样问题后得到的解决方案,并且对我来说工作正常..check

    更新:

    如果上面的代码给出像Sys undefined 这样的错误,那么试试下面的代码。

    <script type="text/javascript"> 
    
    $(document).ready(function () {
    
        //jquery code
    
        var parameter = Sys.WebForms.PageRequestManager.getInstance();
    
        parameter.add_endRequest(function () {
            //jquery code again for working after postback
        });
    });
    
    </script>
    

    【讨论】:

    • @Liton 它取自我的项目,但感谢长期向我提出建议的人..
    • 很棒的解决方案,谢谢@Sachu,让我从办公椅上跳了起来,大声欢呼!
    • @dave 很高兴听到它有帮助
    【解决方案2】:

    改成:

    $('.ClassName').click(function(e) {
    /////
    });
    

    到:

    $(document).on("click", ".ClassName", function (e) {
    /////
    });
    

    【讨论】:

      最近更新 更多