2011-10-24 12 views
3

私は多くの機能を作っています。私はこれらの関数をscript.jsファイルに入れます。しかし、これらすべての機能はすべてのページにロードされています。他のページで関数を呼び出す

私はこのような関数を作っています

$(function() { 
}): 

しかし、どのように私は、関数がすべてのページにロードされていないことを確認することができますか? 私は必要な機能だけを呼び出すことができますか?

+1

関数に名前を付けてから、特定のイベント、たとえばボタンのクリック、ページの読み込みなどで関数を呼び出すことを確認してください。 –

+0

特定のページの範囲外の関数を定義するか、負荷機能かどうかは... – Dev

答えて

2

ポールアイルランドは、その問題に対処する素晴らしい方法を持っています。あなたは基本的にこのようなあなたのページごとに構造を作成することができます

:彼の記事を参照してください

var siteNameSpace = { 
    homepage : { 
     onload : function(){ 
     // do this stuff. 
     } 
    }, 
    contact : { 
     onload : function(){ 
     // onload stuff for contact us page 
     } 
    } 
}; 

そして、それぞれのページのコードがでのみ発生します:

$(document).ready(siteNameSpace[ document.body.id ].onload); 

そのためにはを割り当てる必要がありますあなたのページのそれぞれのbodyのタグ:

<body id="home"> 
<body id="contactUs"> 
and so on 
1

1つの方法は、.jsファイルをモジュールに分割し、そのページに関連するファイルのみを.jsにすることです。 jQueryので

、それはこのようなアプローチを使用することがおそらくより一般的である。

$(function() { 

    if (someCheck) { 
     // do something 
    } 

    if (someCheck) { 
     // do something else 
    } 

}); 

someChecksは、通常、特定の要素(if ($(someSelector).length))が存在することが確認されています。

しかし、あなたの質問に具体的に答えるには、関数に名前を付けて呼び出します。

$(function() { 
    // do foo 
}) 

あなたは

function someName() { 
    // do foo 
} 

を持っているだろうし、あなたがsomeName()のような関数を呼び出すことができますが、明らかにあなたは、あなたがページごとに制御できる場所に関数呼び出しを配置する必要があるだろう基礎(そのようなページの<head>のように、または異なる.jsファイルを含めることにより、以前の回答で説明したように。

0

あなたは、外部のJavaScriptファイルのいくつかのセットを作成し、それらが必要とされているどこのページに置くことができます。

また、jQueryのgetScript methodを使用してスクリプトをロードすることもできます。

$.getScript('url of ext js', function(data, textStatus) { 

}); 
0

私は本当にあなたが正確にするために求めているものを理解することはできませんが、多分私はあなたのためにいくつかのことをクリアすることができます。
変数(関数)が別のファイルで宣言されているかどうかは関係ありません。問題は何ですか?スコープが宣言されています。
つまり、関数が異なるファイル内にあっても、グローバル(クロージャ/関数/オブジェクト内ではない)として宣言されている場合は、それらは可視であり、どこからでも呼び出すことができます。グローバル関数の
例:

function foo() {/*...*/} 
var bar = function(){/*...*/} 
window.func = function(){/*...*/} 

あなたが「隠す」機能、異なるスコープからそれらにアクセスできなくなってしたい場合は、クロージャを使用する必要があります。閉鎖で定義された関数の
例:オーバー

function initialise { 
    var foo = function(){} 
    function bar(){} 
    alert(typeof foo); // function 
    alert(typeof bar); // function 
    // foo & bar are visiblehere 
} 
alert(typeof foo); // undefined 
alert(typeof bar); // undefined 
// foo & bar are undefined here 

より、あなたがそれらにアクセスできないように一度だけ、完全にそれらを実行したい場合、あなたは自己実行機能でそれらをラップすることができます:

(function(){ 
    function bar(){} 
    alert(typeof bar);// function 
    // bar is visible here 
})(); 
// bar is undefined here 

私はあなたの質問に答えたかどうか分かりませんが、これが役立つと願っています。

関連する問題