2012-01-12 13 views
1

リンクをクリックした後に.jsファイルを追加したいとします。 .jsファイルはスクリプトであり、直接呼び出す機能はありませんが、ファイルはサイトの本文部分に挿入する必要があります。jQuery:実行時に.jsファイルを挿入または削除するには?

ページロード時にファイルが呼び出され、リンクのクリックイベントが呼び出された場合は、.jsファイルを削除することもできます。また、ここで

$(".myLink").click(function(){ 
    $.getScript("myJavascriptFile.js"); 
}); 

をして::

私はこのような何かを試してみたが、何も起こりません

$(".myLink").click(function(){ 
var script = document.createElement('script'); 
     script.type = 'text/javascript'; 
     script.src = "app_javascript/dragscroll.js"; 
     $(".myDiv").append(script); // or $("body").append(script); 
}); 
+1

JSファイルを削除するとどのようなメリットがあると思いますか? – Kobi

+0

私はこの機能をテストし、提示するためにこれを行う必要があります。この機能には3つの異なるタイプがあり、リンクをクリックした後に表示されます。 "テスト機能2"。 3つの関数のうち2つは関数(callFunction1();)で直接呼び出すことができますが、関数を呼び出すことなく3つ目の関数をインクルードする必要があります。 –

+0

なぜこのようなスクリプトを追加/削除しますか?大変ですか? – OptimusCrime

答えて

7

まあ、実際には、「何も起こりません」あまりにもおそらく聞こえます大声で getScriptは必ず非同期であるため、実際には2番目のパラメータであるロードハンドラでこのスクリプトを使用することに依存するコードを提供する必要があります。

$.getScript('here_comes_the_script.js', function(){...//here comes the code})

あなたは事をより柔軟にするために、いくつかのラッピングを使用することができます - 、ハンドラをロードするために、このような何かイベントを渡すことによって:

getScriptDetectable = function(src) { 
    getScript(src, function() { 
     $(document).trigger("new_script", {src: src}) 
    }); 
} 

しかし、これを、当然のことながら、からあなたを解放しませんこのコードが非同期であるという事実を考慮してください。

そして、スクリプトを削除することについて。実際には、ブラウザにコードを知らせるための一般的な方法はありません。

あなたのような何かを試すことができます。

var src = document.querySelector('script'); 
src.parentNode.removeChild(src); 

をすでに評価されているこのファイル内のすべてのコードが評価され、ので、このにはあまり意味がありません。

0

は、そのためのjQueryの機能があります - jQuery.getScript()。それはあなたが望むものを正確に行うために、bodyにscriptタグを追加します。

私はこのタグを削除すると、コードを無効にするとは思わない - などのイベントハンドラをバインド解除、あなたが個別に定義されたすべてのグローバル関数を削除する必要があります

関連する問題