개발 Q&A

제목 jquery mobile 에서 페이지생성 완료시 함수 호출
글쓴이 토끼와거북 작성시각 2014/07/01 09:59:47
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 15551   RSS
document 생성이 완료된 후에 초기함수를 호출하고 싶습니다.

1)
jquery mobile 에서는 다음과 같이 함수를 호출할 수 있는데요.
$(document).on('pagecreate', function () { 
  //함수실행
init();
});

2)
이것을 아래의 jquery 함수 호출과 동일하게 생각했는데 실행 결과는 다릅니다.
$(function(){  
  //함수실행
init();
});

1)의 경우 document 생성이 완료되기 전에 실행되어 버리고, 2)의 경우 ​document 생성이 완료된 후 실행됩니다.
jquery mobile 에서 2)의 효과를 만들려면 어떻게 해야 하는지요?


<body onload="init();"> 이런식으로 해 보니 로컬에서 테스트하면 실행되는데 서버에 올리고 실행하면 실행이 안 됩니다. 페이지를 새로 고침하면 비로소 실행되는데 이것은 왜 그럴까요?
 다음글 php 변수 자바스크립트에서 사용... (5)
 이전글 태블릿 추천 좀 부탁드리겠습니다. (1)

댓글

kaido / 2014/07/01 12:02:21 / 추천 0
즉시 실행 함수말씀 인가요?

가장 기본형.
$(document).ready(function() {  });

연산 방식을 이용한 즉시 실행 함수 [각각 장단점이 있음]
/ / 리턴 없이 사용
  !!function () { ... }();
/ / 리턴값 받음
 (function () { ... }()); 
 
/ / 간략화 스타일

!function () {}();
  true && function () { ... } (); 

  0, function () { ... } ();

  ~function () { ... } ();

이 외에는 onload 때 함수 호출등.

즉시 함수 실행으로 한번 찾아보시길 권해 드립니다.

 
토끼와거북 / 2014/07/01 12:19:41 / 추천 0
제 얘기는 jquery mobile 의 경우 

$(function(){  
  //함수실행
init();
});

위와 같이 초기함수를 실행시킬 경우 documnet 의 구성요소가 로딩되기 전에 실행되어 버린다는 점입니다. 
PC버전 웹에서는 위와 같이 할 경우 documnet 의 구성요소가 완전히 로딩된 이후 init() 함수가 실행됩니다. 
PC에서처럼 모바일에서 구현을 하려고 하니 잘 안 되네요

위의 함수가 모바일에서든 PC에서든 둘 다 동작은 하는데요.
실행되는 시기는 서로 다르다는 것입니다.
kaido / 2014/07/01 12:24:56 / 추천 0
그럼 !function () {}(); 이거 사용해 보세요.
document 생성이 끝나고 나서 연산에 의해서 다음 실행 함수로 실행이 되는 걸로 알고 있습니다.


 
토끼와거북 / 2014/07/01 12:50:22 / 추천 0
<script>
!function(){
    init();
}(); 
</script>

이렇게 하니까 실행이 안 됩니다.
kaido / 2014/07/01 13:21:11 / 추천 0
function init(){} <- 이것의 구성요소가
!function () {}();  보다 위에 있어야 합니다. 사용법이 약간 까다롭습니다.
한대승(불의회상) / 2014/07/01 14:53:16 / 추천 0
ㅎㅎ 오묘한 자바스크립트의 세계