【问题标题】:Maintaining JavaScript Code in the <Head> after ASP.Net Postback.在 ASP.Net 回发之后维护 <Head> 中的 JavaScript 代码。
【发布时间】:2010-09-21 20:04:21
【问题描述】:

正如标题所示,我在回发时维护我的代码时遇到了麻烦。我在 Head 部分有一堆 jQuery 代码,这工作正常,直到发生回发,之后它停止运行!

我该如何解决这个问题?回发时不会读取头部,有没有办法可以强制这种情况发生?

JavaScript 是:

        <script type="text/javascript">
        $(document).ready(function()
        {
            $('.tablesorter tbody tr').tablesorter();

        $('.tablesearch tbody tr').quicksearch({
            position: 'before',
            attached: 'table.tablesearch',
            stripeRowClass: ['odd', 'even'],
            labelText: 'Search:',
            delay: 100
        });
       }); 
        </script>

【问题讨论】:

    标签: asp.net javascript jquery postback


    【解决方案1】:

    如果您只是将该代码硬编码到您的页面头部,那么回发不会影响它。我会通过调试检查以下内容(FireFox 中的 FireBug 是一个很好的调试器):

    • 在回发时验证该脚本是否仍在头部。
    • 验证 css 类是否确实附加到页面中的某个元素。
    • 在浏览器完成加载后验证 jquery 代码是否正在执行回发。

    编辑:您是否使用 UpdatePanels 进行回帖?换句话说,这是异步回发还是正常的整页刷新?

    编辑编辑:啊……好吧。因此,如果您使用的是 UpdatePanels,那么文档的就绪状态已经处于就绪状态,因此这部分 jquery 代码将不会再次被触发。我会将 jquery 委托提取到一个单独的函数中,您也可以在异步回发之后调用该函数。

    【讨论】:

      【解决方案2】:

      把你的代码放进去

      function pageLoad(sender, args) {
      
          /* code here */
      
      }
      

      而不是$(document).ready(function() { ... });

      pageLoad() 是一个将在所有同步和异步回发之后执行的函数。有关详细信息,请参阅此答案

      【讨论】:

        【解决方案3】:

        我猜回发会抢占页面的 onLoad 事件,jQuery 需要挂钩才能使用它的 .ready()。

        【讨论】:

          【解决方案4】:
          1. 回发后的 HTML 代码中是否存在脚本?
          2. 如果是这样,代码会被执行吗?通过注释掉您的代码进行测试并临时添加alert('test');
          3. 如果是,回发后代码引用的元素在页面上是否可用?

          【讨论】:

            【解决方案5】:

            您应该将代码放在名为 pageLoad() 的函数中,而不是使用 $(document).ready。 pageLoad() 函数按照惯例连接起来,以便在页面有回发/异步回发时调用。

            【讨论】:

              猜你喜欢
              • 2010-11-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-04-12
              • 1970-01-01
              • 2015-12-29
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多