2013-06-13 3 views
1

.js 스크립트를 렌더링하는 순서 때문에 응용 프로그램에 문제가 있습니다. 예를 들어 http://jsfiddle.net/qCAW3/1에서 js 스크립트가로드되는 순서를 변경하기 전까지 항목을 드래그 할 수 없습니다.jquery/.js 스크립트의 순서

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 

누가이 문제의 원인을 밝힐 수 있습니까? 드래그 가능한 항목을 얻기 위해 순서를 변경하면 내 응용 프로그램의 다른 자바 스크립트 부분이 작동하지 않습니다.

+5

jquery.js를 사용하는 다른 스크립트 (jquery-ui.js 또는 다른 jQuery 플러그인보다 먼저) 앞에 jquery.js를 포함해야합니다. (이 개념은 단지 jQuery에만 적용되는 것은 아닙니다.) 문제가되는 다른 스크립트는 무엇입니까? – nnnnnn

+0

아주 간단합니다. 정의하기 전에 함수를 호출 할 수 없습니다. – Jonathan

+0

자바 스크립트 콘솔을 보는 것이 도움이 될 것입니다. 콘솔은 '$ is undefined'와 같은 오류를 'jquery-ui.js'에 표시합니다. '$'우리가 정의되지 않은 것을 볼 때마다 아마 jQuery를 사용하는 스크립트가 jQuery보다 먼저로드된다는 것을 의미합니다. –

답변

1

일부 코드는 다른 코드에 따라 달라집니다. 그리고 웹 페이지에서 JavaScript 파일은 선언 된 순서대로 실행됩니다. 의존성에서 중요한 것은 무엇입니까!

// person.js 
var Person = function(name) { 
    this.name = name; 
}; 

Person.prototype.greet = function() { 
    alert("Hi, " + name); 
} 

그리고 다른 파일 : 우리가로드하면 roster.js 먼저, 그것은 폭발

// roster.js 
var roster = [ 
    new Person("Alex"), 
    new Person("Eddy") 
]; 

for (var i = 0; i < roster.length; i++) { 
    roster[i].greet(); 
} 

는 다음과 같이 두 .js 파일을 가지고 있다고 할 수 있습니다. Person 생성자는 아직 사용할 수 없으므로 어쨌든 호출하면 예외가 발생합니다.

person.js을로드 한 다음 roster.js을로드하면 로스터 코드가 실행될 때 Person을 사용할 수 있습니다.


정확하게 같은 이유로 jQuery를 사용하는 코드보다 먼저 jQuery를로드해야합니다.

+0

답변 해 주셔서 감사합니다. 그것은 .js 스크립트가 올바른 순서 일 때 내 응용 프로그램을 중단시키는 또 다른 스크립트였습니다. 좋은 설명 감사. – everreadyeddy

+0

_ "폭발 할 것입니다."_ - 그래, 나는 그렇게 멋진 랩탑을 잃어 버렸다. (+1) – nnnnnn

+0

@nnnnnn 비 유적으로, 물론 :) –

0

일반적으로 하나의 파일이 다른 파일에 종속되어있는 경우에는 나중에로드해야합니다. 그것은 매우 일반적인 의미입니다. 문제는로드 순서 및 타이밍을 중심으로하므로 here을 제안하는 것이 좋습니다. 기본적으로로드가 끝나면 모든 파일이 의존하기 전에는 아무 것도 실행하지 않도록하십시오.