在ASP.Net回发后维护<head>中的JavaScript代码。

3
如标题所示,我在 postback 时无法维护我的代码。我在 Head 部分有一堆 jQuery 代码,这很好用,但是当 postback 发生后就停止工作了!
我该如何解决?Head 在 postback 时不被读取,是否有一种方法可以强制执行它?
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个回答

6
如果你只是在页面头部硬编码了该代码,则回发不会影响它。我建议通过调试(FireFox中的FireBug是一个很好的调试器)来检查以下内容:
  • 验证脚本在回发时是否仍然存在于头部。
  • 验证CSS类是否实际上附加到页面中的某个元素。
  • 验证jQuery代码是否在浏览器在回发后完成加载后执行。

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

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


2

将你的代码放在这里

function pageLoad(sender, args) {

    /* code here */

}

$(document).ready(function() { ... });之外,可以使用pageLoad()函数来执行所有的后续同步和异步回传。查看这个答案以获取更多细节。


1

我猜测PostBack会抢占页面的onLoad事件,而jQuery需要钩入该事件才能使用.ready()。


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

0

不要使用 $(document).ready,你应该将代码放在一个名为pageLoad()的函数中。按照约定,pageLoad()函数被连接到每当页面有postback/asyncpostback时调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接