2013-06-14 2 views
0

예를 들어, 내 문서에 패널 두 페이지가 열려 슬쩍 필요가 패널 여러 페이지를 가지고, 패널은 같은 이름을 가지고, 그것은 다음과 같습니다같은 이름을 가지고

<html> 
    ... 
    <body> 
    <div data-role="page" id="page1"> 
     <div data-role="panel" id="left-panel">...</div> 
     <div data-role="panel" id="right-panel">...</div> 
     ... 
    </div> 
    <div data-role="page" id="page2"> 
     <div data-role="panel" id="left-panel">...</div> 
     <div data-role="panel" id="right-panel">...</div> 
     ... 
    </div> 
    </body> 
</html> 

첫 페이지가로드되는 동안 작동하도록 스 와이프를 가져올 수 있지만 한 번 새로운 페이지를로드하면 스 와이프가 중단되어이 오류가 발생합니다. Uncaught Error: cannot call methods on panel prior to initialization; attempted to call method 'open'. 난 HERE 설명 된 솔루션을 시도했지만 그것은 나를 위해 작동하지 않았다. 나는 열려있는 패널을 슬쩍이 코드를 사용하고 있습니다 : 나는 각 페이지에 슬쩍 리스너를 결합 되었기 때문에 각 페이지는 강타 기능하지만 그런 운이 것을 해결할 것이라고 생각 $(document).on("pageinit", function(){... it's at the end of this function}); 안에

$("#page1").on("swipeleft swiperight", function(e) { 
    if ($.mobile.activePage.jqmData("panel") !== "open") { 
     if (e.type === "swipeleft") { 
      $("#right-panel").panel("open"); 
     } else if (e.type === "swiperight") { 
      $("#left-panel").panel("open"); 
     } 
    } 
}); 

$("#page2").on("swipeleft swiperight", function(e) { 
    if ($.mobile.activePage.jqmData("panel") !== "open") { 
     if (e.type === "swipeleft") { 
      $("#right-panel").panel("open"); 
     } else if (e.type === "swiperight") { 
      $("#left-panel").panel("open"); 
     } 
    } 
}); 

.

내가 시도하고있는 것을 할 수있는 방법이 있습니까? 나는 각 페이지에서 클래스 (.page)를 사용하고 스 와이프 리스너 코드의 한 인스턴스를 사용하지만 아무 것도 작동하지 않는 것처럼 페이지가 변경 될 때마다 스 와이프 리스너 코드를로드하는 것과 같은 여러 솔루션을 시도했다.

+1

'pageinit', '[data-role = page', function()'이 작동하지 않으면'pageinit' 바인딩을 제거하십시오. – Omar

+0

님이 귀하의 제안을 모두 시도했지만 어느 것도 작동하지 않았습니다. – Joe

+1

잠시만 기다려주세요. html 한 페이지입니까? 그렇다면 동일한 ID를 두 번 사용하십시오. – alkis

답변

0

그래서 내가 알기에 부분적으로 옳았습니다. 여러 ID가 jQuery Mobile을 망치고 있었지만 패널 ID를 구별하는 것 외에도 javacript 파일의 바인딩을 $(document).ready(function(){...});으로 변경 한 다음 각각을 랩핑해야했습니다. 스 와이프 처리기 자체는 $("#pagenamehere").on("pageinit", function(){...}); 바인딩입니다. +1 당신에게 @alkis 만약 당신이 여러 ID에 대해 언급하지 않았다면, 나는 단지 그들이 동일한 ID를 사용할 수있는 하나의 스 와이프 핸들러, 그런 행운을 가질 수있는 별도의 페이지라고 생각하지 않았을 것입니다. 감사.

관련 문제