1

私はスクリプトをインラインで開発してきましたが、今はスクリプトを js ファイルに移動したいと考えています。ただし、移動する最初のスクリプトは js ファイルからは機能しません。

function listEvents(url, phash) {
    var hashlocation = phash.split('#')[1];
    if (hashlocation === undefined) {
        var page = '';
    } else {
        var page = hashlocation;
    }
    $('#events').empty().load(url + page);
} 

このようにページから呼び出されます。

$(window).load(function() {
    listEvents('<? echo base_url(); ?>ajax/events_ajax/',window.location.hash);
});

js ファイルは、だれかが尋ねる前に、ヘッドの jquery ライブラリの後にロードされます。キャッシュをクリアし、cloudflare を開発モードにするなどして、ブラウザに JS ファイルをロードすると、関数が表示されます。コンソールにエラーは表示されません。私は何が欠けていますか?

4

2 に答える 2

1

.readyコードを関数に入れる必要があると思います:

$(document).ready(function() {
   $(window).load(function() {
      listEvents('<? echo base_url(); ?>ajax/events_ajax/',window.location.hash);
   });
});


説明:

問題は、コードを起動したときに、コンテンツが完全に読み込まれていないことです。あなたの場合は#events. これはまだDOM上になく、結果として jQuery によって無視されました。HTMLファイルで実行すると、コードをすぐ下<div id="events"></div>(またはコンテナが何であれ)に配置するのと同じように、後で実行されたため、その要素が見つかり、コードが期待どおりに機能しました!

jQuery .ready() 関数の詳細を読む

  • .ready() function: DOMが完全にロードされたときに実行する関数を指定します。
于 2013-10-13T12:40:30.153 に答える
0

私の推測では、あなたの組み込み PHP<? echo base_url(); ?>です:

listEvents('<? echo base_url(); ?>ajax/events_ajax/',window.location.hash);

コンソールだけでなく、ブラウザの開発ツールでネットワークパネルを確認してください。404 が表示されているかどうかを確認します。

インライン スクリプトを使用していた場合、それらは PHPですが、.jsファイルに移動した後、ファイルは PHP によって処理されなくなります。

于 2013-10-13T12:40:57.230 に答える