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
  1. ポストバック後の HTML コードにスクリプトは存在しますか?
  2. もしそうなら、コードは実行されますか? コードをコメントアウトしてテストし、一時的に追加しますalert('test');
  3. その場合、コードによって参照される要素は、ポストバック後にページで利用できますか?
于 2008-11-11T16:51:14.050 に答える
1

私は、ポストバックがページの onLoad イベントを横取りしていると推測しています.ready() を使用するために jQuery がフックする必要があります。

于 2008-11-11T16:44:51.113 に答える
0

$(document).ready を使用する代わりに、コードを pageLoad() という関数に入れる必要があります。pageLoad() 関数は、慣例により、ページにポストバック/非同期ポストバックがあるときに呼び出されるように配線されています。

于 2009-09-22T22:07:11.583 に答える