3

正如标题所示,我无法在回发时维护我的代码。我在 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>
4

5 回答 5

6

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

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

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

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

于 2008-11-11T16:36:40.647 回答
2

把你的代码放进去

function pageLoad(sender, args) {

    /* code here */

}

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

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

于 2009-09-22T22:18:02.143 回答
1

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

于 2008-11-11T16:44:51.113 回答
1
  1. 回发后的 HTML 代码中是否存在脚本?
  2. 如果是这样,代码会被执行吗?通过注释掉您的代码并临时添加来测试alert('test');
  3. 如果是这样,回发后页面上的代码引用的元素是否可用?
于 2008-11-11T16:51:14.050 回答
0

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

于 2009-09-22T22:07:11.583 回答