0

私はこのすべてに不慣れで、メインページの div に動的にロードされた html ページに大きく依存する Web アプリを作成しています。

メインページは、jquery や私自身のいくつかを含むさまざまな js ファイルにリンクしています。

これに加えて、ロードされた各 html ファイルは独自の js ファイルにリンクして、ユーザーの操作を制御します。また、それらの一部には、html ページがロードされる div もあります。

私が気付いていることの 1 つは、一部の HTML ページがメイン ページにロードされたスクリプトへの反応が遅いことです。クリックしたときにボタンを強調表示するなどのグローバルなものは、一部のページで認識できるように微調整する必要があります。

私を本当に悩ませているもう 1 つのことは、メイン ページにリンクされているか別の子ページにリンクされているかに関係なく、一部のスクリプトが別のファイルにあると機能しないことです。実際の関数を実際の子ページの js ファイルに入れる必要があります。

データベースから html テーブルを作成するためのこの単純な関数は、これらの 1 つです...

function fill_grid(collection, columns){

    var jsonObj = JSON.stringify(columns);

    param = "collection=" + collection + "&columns=" + jsonObj;

        // Ajax call ~~~~~>

    $.ajax({
        type:           'POST',
        url:            'back/fill_grid.php',
        processData:    false,
        data:           param,
        dataType:       'json',
        success:        function(data){

                            $('.grid_foot').text(data.rows.length + ' records');

                            $.each(data.rows, function(count, item) {

                                var c = 0;
                                var cells = '';

                                while (c < columns.length) {

                                    cells += '<td class="'+ columns[c] +'">' + item['cell'][c] + '</td>';

                                    c++;
                                }

                                var newTr = '<tr id="' + item['id'] + '">'+ cells +'</tr>';
                                $('.grid_wrapper table').append(newTr);
                            });

                            var c = 0;

                            while (c < columns.length) {

                                var min_width = $('div.' + columns[c]).css('min-width');
                                $('td.' + columns[c]).width(min_width);

                                var col_width = $('td.' + columns[c]).width(); 
                                $('div.' + columns[c]).width(col_width);

                                c++;
                            }

                            var c = columns.length - 1;

                            var col_width = $('div.' + columns[c]).width(); 
                            $('td.' + columns[c]).width(col_width);
                        }       
    });
}

...ご覧のとおり、モジュラー アプリケーション用に設計されています。ajax 呼び出しのパラメーターとテーブルの構築が渡されます。ただし、別のファイルにある場合は実行されませんが、firebug と dom インスペクターはどちらもエラーを表示しません。もちろん、両方のコンソールに貼り付けた場合は機能します。

なぜこうなった?ネストされたhtmlページが原因ですか?ページにロードできるスクリプトの数に制限はありますか? 他のスクリプトが干渉している可能性はありますか? どうすればデバッグできますか?

編集: Firebug と Dom Inspector の両方が、「data_grid()」が定義されておらず、datagrid.js イベントが見つからないことを教えてくれますが、スクリプト タグで正しいパスを使用し、メイン ページの前に含めました。独自のjsファイル!ブラウザのキャッシュをフラッシュして再起動しましたが、それでもこれが表示されます。

編集: いくつかのスヌーピングの後、子ページの 1 つでバム リンクを見つけました。それを修正した後、404 ファイルが見つかりませんというエラーが発生しなくなりました。しかし、まだ関数が定義されていないというエラーが発生します。

4

1 に答える 1

0

jquery "$(document).ready(function(){});"を削除しました ファイルから、それは完璧に機能しました!今、私はこれがそれをたまにしか機能させないのだろうかと思っています。

于 2010-10-21T15:01:00.457 に答える