2011-10-24 4 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

한 가지 방법은 .js 파일을 모듈로 분할하고 해당 페이지와 관련된 파일 만 .js으로 만드는 것입니다. jQuery를 에서

, 이와 같은 접근 방법을 사용하는 것이 아마도 더 일반적인 경우 : someChecks 보통 특정 요소가 존재 ( if ($(someSelector).length))하는 것이 확인되어

$(function() { 

    if (someCheck) { 
     // do something 
    } 

    if (someCheck) { 
     // do something else 
    } 

}); 

.

그러나 특별히 질문에 대답하려면 함수의 이름을 지정한 다음 호출해야합니다.

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

당신은

function someName() { 
    // do foo 
} 

이있을 것이다 다음은 someName() 같은 함수를 호출 할 수 있지만, 분명히 당신은 당신이 당 페이지에서 제어 할 수있는 장소에 함수 호출을 넣어 필요할 것 (예 : 페이지의 <head> 또는 답변 앞부분에서 설명한대로 다른 .js 파일을 포함하여)

0

외부 자바 스크립트 파일을 몇 개 만들어 페이지에 배치 할 수 있습니다.

또는 jQuery의 getScript method을 사용하여 스크립트를로드 할 수 있습니다.

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

}); 
0

정말 정확히 요구하는지 이해할 수 없다,하지만 어쩌면 내가 당신을 위해 몇 가지를 지울 수 있습니다.
변수 (함수)가 다른 파일에 선언 되어도 상관 없습니다. 무엇이 중요합니까? 범위이 선언되었습니다.
즉, 함수가 다른 파일에 있더라도 전역 (클로저/함수/개체 내부가 아니라)으로 선언 된 경우에는 표시되고 어디서나 호출 할 수 있습니다. 전역 함수의
예는 :

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

당신은, 당신이 클로저를 사용한다 "숨기기"기능, 다른 범위에서 액세스를 제작하십시오. 폐쇄에 정의 된 함수의
예 :

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

: 당신이 한 번만를 실행하고 완전히 액세스 할 수 없게하려는 경우 이상

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 

더 많은, 당신은 기능을 실행 자체에서 그 (것)들을 포장 할 수 있습니다 나는 당신의 질문에 대답했는지 모르겠지만 이것이 도움이되기를 바랍니다.