2012-09-03 5 views
0

$ (window) .resize를 사용하여 모바일 장치 방향 변경시 일부 함수를 호출하고 싶습니다. $ (document) .ready 안의 코드는 안드로이드 장치를 사용할 때 작동하지만 첫 번째 방향이 발견 된 후 iPhone에서 $ (window) .resize를 다시 호출하지 않습니다. $ (document) .ready 외부에 (window) .resize 함수를 넣으면 iPhone에서도 작동합니다.

이 $ (window) .resize 함수 안에서 $ (document) .ready 블록에 정의 된 메서드를 호출해야하므로 어떻게 할 수 있습니까?

+0

간단한 생각 ... 당신은 기능을 글로벌하게 만들지 않습니까 ??? 또는 대중이나 뭐 그런가? – Mathlight

+0

그냥 이것 좀 봐, 그걸로 충분합니다 : http://stackoverflow.com/questions/6960448/global-jquery-function – Mathlight

+1

당신은'$ (document) .ready' 밖에서 변수에 할당해야합니다. –

답변

2

두 개의 서로 다른 이벤트 처리기의 내용을 사용해야하므로 이벤트 처리기에서 해당 내용을 이동해야합니다. ready 또는 resize이 먼저 트리거되는지 알 수 없기 때문에 두 이벤트 핸들러에서 메소드를 작성할 수 없습니다.

당신은 예를 들어 방법을 유지하는 개체를 만들 수 있습니다 :

var commonMethods = { 
    data: 42, 
    someMethod: function() { alert(this.data); } 
}; 

$(document).ready(function(){ 
    commonMethods.someMethod(); 
}); 

$(window).resize(function(){ 
    commonMethods.someMethod(); 
}); 
+0

하지만 질문은 준비 처리기 안에 resize 처리기가 정의되어 있으므로 범위 문제처럼 보이지 않는다는 것을 의미합니다. 어쨌든, 우리는 코드를 보지 않고는 확신 할 수 없습니다. – bfavaretto

+0

@bfavaretto : 크기 조정 핸들러는 iPhone에서 작동 할 준비가 된 핸들러 외부에서 정의됩니다. (질문의 두 번째 문장) – Guffa

+0

예, 나는 그것을 보았습니다. 그리고 당신의 답은 그 제목의 질문에 답을줍니다. 요점은 준비된 처리기 안에 정의 된 크기 조정 처리기로 작동해야한다고 생각합니다. 왜 그렇게되지 않을지 모르겠다. 아이폰 기묘, 어쩌면? – bfavaretto

1

$(document).ready() 블록 밖에서 방법을 정의합니다.
그런 다음 코드 전체에서 필요에 따라 호출하십시오. 이렇게하면 $(document).ready()$(window).resize() 블록에서 액세스 할 수 있습니다.

+0

내 혼란은 $ (document) .ready에서 JQuery로 XML을 파싱하고 있었기 때문에 문서가 준비되기 전에 구문 분석을 할 수 없었다. 나는 다른 JQuery 파싱을하지 않음으로써 아이폰 크기 조정 문제를 극복했다. – baris

관련 문제