1

jqueryの.html()関数を使用して、アプリケーションのメインページの部分的なdivにhtmlファイルを挿入しています。挿入された部分的なhtmlページには、script(src ='../../javascripts/partialFunctions.js')などのjavascript参照があります。jquery関数とメインページは次のようになります。

$('.partialDiv').html(htmlResult);

<div>main page</div>
<div class='partialDiv'></div>
<input type='button'>button</input>

ユーザーがメインアプリケーションページの特定のボタンをクリックすると、jquery関数が呼び出され、htmlファイルがメインページに挿入されます。

問題は、新しいhtmファイルが挿入されるたびに、ブラウザがスクリプトファイルをロードすることです。そのため、ユーザーがボタンを数回クリックすると、JavaScript関数が重複して表示されます。

これを動的に実行して、JavaScript関数の重複を回避するにはどうすればよいですか?

前もって感謝します!

4

2 に答える 2

1

スクリプトタグと参照をhtmlResultページから削除できます。次に、を使用$.getScript('myscript.js')して必要なJavaScriptファイルをインポートします。getScript()の詳細はこちら

したがって、スクリプトをロードして、一度だけロードされるようにするには、次のようにします。

var window.foo = false; //Outside the document.ready

$('.partialDiv').html(htmlResult);
if(window.foo == false){
    $.getScript("js/myScript.js", function(data, textStatus, jqxhr){
        console.log('Script loaded');
        window.foo = true;
    });
}
于 2012-11-21T21:53:29.687 に答える
0

簡単なテストを行ったところ、を呼び出すととにかくスクリプトタグが削除されているよう.html()です。したがって、次のことを簡単に実行できるはずです。

var html = "<html><script></script></html>",
    cleanedHtml = $(html).html();
myEl.html(cleanedHtml);
于 2012-11-21T21:43:55.883 に答える