2012-08-09 2 views
1

"divs"이라는 큰 HTML 페이지가 "페이지"로 간주되어 "divs"사이에 바뀝니다.jQuery 모바일 1.1.0 : 이상한 'pagebeforechange'동작

나는이 코드를 추가했습니다 :

$(document).bind('pagebeforechange', function(e, data) { 
    if (typeof data.toPage === "string") { 
     console.log(data.toPage); 
    } 
} 

을 그리고 여기에 콘솔 로그입니다 :

#page-main 
http://ba.m.p.fr/#page-panier 
http://ba.m.p.fr/#page-horaires 
http://ba.m.p.fr/#page-horaires&ui-page=1-5 
http://ba.m.p.fr/#page-horaire-valider 

그래서, 때때로 그것은 단지 id이 때로는 전체 URL입니다입니다. 어째서?

+1

어떻게 당신이 그 페이지 사이를 교환하려면 어떻게합니까? changePage 메소드, 링크 또는 둘 다 사용합니까? – davids

+0

'changePage' 메서드 만 사용합니다 –

+0

그래서 ID를 사용하여 첫 번째 값을 가져 오는 중입니까? jQuery Mobile 문서에 따르면 "값 (toPage)은 이벤트를 트리거 한 changePage() 호출에 대한 첫 번째 arg와 정확하게 일치합니다" – davids

답변

0

해결 방법을 만들었습니다. 설명이 아닙니다. 내 예전의 코드는 같았다 :

$(document).bind('pagebeforechange', function(e, data) { 
    if (typeof data.toPage === "string") { 
     if (data.toPage == "page-aa") { 
      /* code for page-aa */ 
     } else if (data.toPage === "page-bb") { 
      /* code for page-bb */ 
     } else if (data.toPage === "page-cc") { 
      /* code for page-cc */ 
     } 
    } 
} 

그리고 지금 나의 새로운 코드는 다음과 같다 :

$("div#page-aa").on('pagebeforeshow', function(e, data) { 
    /* code for page-aa */ 
}); 
$("div#page-bb").on('pagebeforeshow', function(e, data) { 
    /* code for page-bb */ 
}); 
$("div#page-cc").on('pagebeforeshow', function(e, data) { 
    /* code for page-cc */ 
}); 

을 그리고 그것은 완벽하게 작동합니다 : 난 'pagebeforeshow'에 의존하고있다. 하지만이 방법은 해결책이 아니라 내 질문에 대한 설명입니다. 어쨌든 누군가가 그 문제에 대한 구글의 검색 및 내 질문을 읽는다면 어쩌면이 해결 방법이 도움이 될 것입니다!

0

toPage는 전환 될 페이지가 포함 된 jQuery 컬렉션 개체이거나로드/전환 될 페이지의 URL 참조 일 수 있습니다.

// We only want to handle changePage() calls where the caller is 
// asking us to load a page by URL. 
if (typeof data.toPage === "string") ... 

http://jquerymobile.com/demos/1.1.1/docs/pages/page-dynamic.html

관련 문제