2011-11-30 7 views
1

나는 노출 된 모듈 패턴으로 놀아 왔습니다. 원래 싱글 톤 패턴을 사용하기 시작했으나 모듈 패턴을 읽는 것이 더 나은 옵션 인 것으로 보입니다.jQuery가 작동하지 않는 상태로 모듈 패턴을 표시했습니다.

그래서 내가 테스트 한 다음

var test = (function() { 

var init = function() { 
    alert('hello'); 
}; 

return { 
    init: init 
}; 
})(); 

그래서 내가 노력

<script>test.init();</script> 

그러나, 내가 jQuery를 사용하려면 호출 할 때이 잘 작동을 :

var test = (function($) { 

var init = function() { 
    $("#samplediv").html('test'); 
    alert('hello'); 
}; 

return { 
    init: init 
}; 
})(jQuery); 

그러나 이것은 효과가 없습니다. 다음을 사용할 때 작동합니다 :

<script>$(function() { test.init(); });</script> 

전화를 걸 때 jQuery를 추가하지 않으면 어떻게 작동합니까?

+0

[작품] (http://jsfiddle.net/QeBme/), 그래서 당신은 내가 생각하는 다른 문제가 있습니다. – Ryan

+0

두 번째 경우는 ''? –

+0

예. 그것은 ... – Ryan

답변

4

일반적으로 DOM을 만지는 것은 $(document).ready(fn) 콜백에서 수행해야합니다. $(fn)이 바로 가기입니다.

아직 작동하지 않는 이유는 아직 존재하지 않는 DOM 요소를 검색하기 때문입니다. 그래서 당신에게는 2 가지 선택이 있습니다. 어느 쪽이든 $() 래퍼를 사용하거나 DOM 요소가있는 경우에만 코드를 실행하는 다른 방법을 찾아야합니다. 이렇게하는 또 다른 방법은 DOM 태그가 실행될 때 존재할 수 있도록 script 태그를 body 태그의 맨 아래로 이동하는 것입니다.

<body> 
    <!-- your page elements here --> 
    <script>test.init();</script> 
</body>