0

次のようなページがあるとします

<html><head></head><body><!--STUFF-->
   <script>
       if(SomeBooleanVariable) {
           $.getScript('js/file.js');
       }
    </script>
 </body></html>

私の file.js ファイルには、ラッピングなしの生の jQuery イベントが含まれているだけです。正確には次のとおりです。

 $(document).on("eventHere", "classHere", function(e) {
   //Stuff
 });


 $(document).on("eventHere", "classHere", function(e) {
   //Stuff
 });

これは単に機能していません。file.js の内容を HTML に直接含めると正常に動作しますが、JS が正しく含まれていないようです。「アラート(3);」を入れてみました file.js の先頭にありますが、起動しません。私は次のことを試しました:

 $("head").append("<script src=\"js/file.js\" />");
 $(document).append("<script src=\"js/file.js\" />");
 -and-
 document.write("<script src=\"js/file.js\" />");
4

1 に答える 1

1

その .js ファイルを動的にロードする場合は、コードを次のように変更します。

if(SomeBooleanVariable) {
    $.getScript("ajax/test.js")
    .done(function(script, textStatus) {
        console.log(textStatus);
    })
    .fail(function(jqxhr, settings, exception) {
        console.log("Triggered ajaxError handler.");
    });  

コンソールでエラーが発生するかどうかを確認します

たとえば、mod_rewrite を使用していて、jQuery がサブページがある「フォルダー」に関連するスクリプトをロードしようとしている可能性があります。例: あなたは @ http://www.example.com/link-to-subpageです。 / . この場合、jQuery は http://www.example.com/link-to-subpage/js/file.js をロードしようとしますが、それは @ http://www.example.com/js/file.jsにあります。 . この場合、絶対パスを使用してください。したがって、代わりに:

js/file.js

書きます:

/js/file.js
于 2013-01-04T20:21:54.587 に答える