在ASP.Net Postback之后维护JavaScript代码。

时间:2008-11-11 16:27:13

标签: asp.net javascript jquery postback

正如标题所示,我在回发时维护代码时遇到了问题。我在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>

5 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:2)

将您的代码放入

function pageLoad(sender, args) {

    /* code here */

}

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

  1. 回发后脚本中是否存在脚本?
  2. 如果是,代码是否会被执行?通过注释掉您的代码进行测试并暂时添加alert('test');
  3. 如果是这样,回发后页面上可用的代码引用了哪些元素?

答案 4 :(得分:0)

您应该将代码放在名为pageLoad()的函数中,而不是使用$(document).ready。按照惯例,只要页面有回发/异步后退,就会调用pageLoad()函数。