簡體   English   中英

維護JavaScript代碼 <Head> 在ASP.Net Postback之后。

[英]Maintaining JavaScript Code in the <Head> after ASP.Net 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>

如果您只是將代碼硬編碼到頁面的頭部,那么回發郵件不會影響它。 我會通過調試檢查以下內容(FireFox中的FireBug是一個很好的調試器):

  • 驗證腳本是否仍在回發中。
  • 驗證css類實際上是否附加到頁面中的某個元素。
  • 驗證瀏覽器在回發后加載后jquery代碼是否正在執行。

編輯:您是否使用UpdatePanels回復郵件? 換句話說,這是異步回發還是普通的整頁刷新?

編輯編輯:啊......好吧。 因此,如果您正在使用UpdatePanels,那么文檔的就緒狀態已經准備就緒,因此不會再次觸發jquery代碼的一部分。 我會將jquery委托提取到一個單獨的函數,您也可以在異步回發后調用它。

把你的代碼放進去

function pageLoad(sender, args) {

    /* code here */

}

代替$(document).ready(function() { ... });

pageLoad()是一個將在所有回發,同步和異步之后執行的函數。 有關詳細信息,請參閱此答案

我猜測回發預先搶占了頁面的onLoad事件,jQuery需要掛鈎才能使用它的.ready()。

  1. 回發后腳本中是否存在腳本?
  2. 如果是這樣,代碼是否被執行? 通過注釋掉你的代碼進行測試並臨時添加alert('test');
  3. 如果是這樣,回發后頁面上可用的代碼引用了哪些元素?

您應該將代碼放在名為pageLoad()的函數中,而不是使用$(document).ready。 按照慣例,只要頁面有回發/ asyncpostback,就會調用pageLoad()函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM