2012-04-20 2 views
1

페이지가있는 jquery 모바일 앱이 있습니다. 이 페이지에는 세 가지 DIV가 있으며 다양한 변수를 기반으로 이러한 DIV 중 하나를 프로그래밍 방식으로 선택합니다. 그럼에도 불구하고 하나의 DIV에는 select 요소가 있습니다. 이 요소에는 20 개의 항목이 있습니다. 전단 수량으로 인해 선택 상자가 자체 대화 상자에서 열립니다. 괜찮아요, 그러나 사용자가 선택을하면 내 호스팅 페이지의 pagebeforeshow 이벤트가 다시 시작됩니다. 내 문제는 사용자가 옵션을 선택하거나 선택 대화 상자를 닫은 결과로이 이벤트가 시작되었음을 감지하는 방법을 파악할 수없는 것입니다.JQuery Mobile이 선택 대화 상자에서 왔는지 감지합니다.

pagebeforeshow 이벤트에서 우리가 어떻게 여기에 있는지 감지 할 수있는 방법이 있습니까?

답변

1

jQuery 모바일은 대부분의 이벤트 콜백 함수에 메타 데이터를 전달합니다. 부터 docspagebeforehow에 : 실제 전환 애니메이션이 개막하기 ​​전에 "toPage"에 트리거

우리는으로 전환된다. 이 이벤트에 대한 콜백은 데이터 객체를 두 번째 arg로 수신합니다. 이 데이터 객체에는 다음과 같은 속성이 있습니다.

  • prevPage (객체) - 전환 할 페이지 DOM 요소가 포함 된 jQuery 컬렉션 객체입니다. 응용 프로그램 시작 중에 첫 페이지가 전환되면이 콜렉션이 비어 있음에 유의하십시오.

당신은 prevPage 현재 페이지 인 경우 감지, 즉 당신의 이점에 분기하는 콜백 함수에서 이것을 사용할 수 있어야합니다. 나는 또한 위의 댓글에서 제기 된 질문을 확인하지 않았다

$('#yourPage').live('pagebeforeshow', function(event, data) { 
    var from = data.prevPage; 
    // do some inspection of `from` and branch accordingly 
    // might require some experimental console.logging first 
}); 
+0

제가 틀렸다면 저를 시정하십시오, 그러나 "선택"요소의 경우에는 prevPage 객체가 비어있는 것으로 보입니다. – user70192

+0

@ user70192 그걸 확인하지는 못했지만 아직 분기 할 수있는 정보가 충분하지 않습니까? 그냥 공허함을 테스트하면 선택한 오버레이에서 왔음을 알 수 있습니다. – paislee

0

하지만 data.prevPage는 data.prevPage[0].innerHTML를 통해 액세스 전체 이전 페이지의 HTML의 사본을 가지고 같은이 보일 수 있습니다. 선택 대화 상자에서 click 이벤트에 바인딩하는 것과 같은 작업을 수행하고 사용자가 항목을 선택한 DOM에 클래스를 추가하라고 알려주고 HTML에서 다시 긁어 낼 수있을 것이라고 확신합니다. 그곳에 아이디어를 던지십시오.

관련 문제