2015-01-06 2 views
2

팝업 앵커 내에서 $ .mobile.changePage를 사용하여 다른 페이지로 변경하려고했지만 팝업 내 앵커를 클릭하면 변경됩니다. 이전 페이지로 다시 돌아갑니다. 이 사용 changePage "jumps" back to old page : JQuery Mobile changepage가 이전 페이지로 돌아 가기보다 페이지를 변경합니다.

는 I이 용액을 시도 $ (문서) .bind ("mobileinit"함수() {; $ .mobile.pushStateEnabled = 거짓을});

하지만 작동하지 않았습니다.

이 내 페이지 구축하는 방법입니다

<div id="pgTest" data-role="page" data-theme="a"> 
    @Html.Partial("_Header", new WebApp.Models.HeaderModel() { Header = "Title" }) 
    <div data-role="ui-content"> 
     <div style="width:90%; margin:0 auto;"> 
      @Html.Partial("_ListViewWithFilter", Model) 

      <!--Pop Up--> 
      <div data-role="popup" id="popupConfirmacao" data-dismissible="false" data-overlay-theme="a" class="ui-corner-all"> 
       <div role="main" class="ui-content"> 
        <h3 class="ui-title" id="dialogTitle"></h3> 
        <a id="linkConfirmacaoDialog" href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-btn-b" data-rel="back">Sim</a> 
        <a href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-btn-b" data-rel="back">Não</a> 
       </div> 
      </div> 
      <!--Pop Up ends--> 
     </div> 
    </div> 
    @Html.Partial("_Footer") 
</div> 

을이 내 JS입니다 :

<script type="text/javascript"> 
     $(function() { 
      var itens = $('#ulMusicas>li'); 
      itens.click(function() { 
       var nomeMusica = $(this).find('a').text(); 
       $('#dialogTitle').text('Add "' + nomeMusica + '"?'); 
       $('#linkConfirmacaoDialog').click(function() {      
        $.mobile.changePage('/Controller2'); 
       }); 
       $('#popupConfirmacao').popup('open', { positionTo: 'window', transition: 'pop' }); 
      }); 
     }); 
</script> 

그것은 기본적으로 목록보기를 생성하고 어떤 항목을 클릭 때 팝업을 엽니 다. 팝업의 버튼을 클릭하면 다른 페이지로 리디렉션됩니다. 현재 jquery mobile이 나를 다른 페이지로 리디렉션 한 다음 이전 페이지로 되돌립니다.

누구나 어떤 아이디어가있을 수 있습니까?

+1

'id = "linkConfirmacaoDialog"'에서'data-rel = "back"을 제거하십시오. – Omar

+0

효과가있었습니다! 그래서 분명히, 나는 이것을 보지 못했다고 생각할 수 없다 ... 고맙습니다! – Raiiy

답변

3

문제는 data-rel="back"#linkConfirmacaoDialog 확인 버튼에 발생합니다. 이 버튼을 누르면 두 개의 다른 내비게이션 주문이 제공됩니다. 그러면 대상 페이지로 이동 한 다음 이전 페이지로 돌아갈 수 있습니다. 팝업을 닫고 같은 페이지에 남아있을 때만 data-rel="back"을 사용하십시오.

또 다른 문제 팝업 div는 페이지 div 이외의 div로 감싸서는 안됩니다. 또한 목록 항목을 클릭 할 때마다 click 청취자를 #linkConfirmacaoDialog에 여러 개 추가 할 수 있습니다. 다른 click 바인딩 외부에 click 바인딩을 배치하십시오.

$(function() { 
    var itens = $('#ulMusicas>li'); 
    /* list item click listener */ 
    itens.click(function() { 
     var nomeMusica = $(this).find('a').text(); 
     $('#dialogTitle').text('Add "' + nomeMusica + '"?'); 
     $('#popupConfirmacao').popup('open', { 
      positionTo: 'window', 
      transition: 'pop' 
     }); 
    }); 
    /* confirmation button - popup */ 
    $('#linkConfirmacaoDialog').click(function() { 
     $.mobile.changePage('/Controller2'); 
    }); 
}); 
+0

볼 수 있습니다.하지만 내 팝업이 내 페이지의 div 'pgTest'와 같은 페이지에 있거나 팝업을 감싸기 위해 다른 페이지 div를 만들어야합니까? 실제로 리디렉션 할 페이지가 동적이기 때문에 내 listview의 항목을 클릭하면 '# linkConfirmacaoDialog'의 리스너를 무시합니다. 나는 이것을 수행 할 때 청취자를 재정의하고 다중 청취자를 추가하지 않을 것을 당부했다. – Raiiy

+0

@Raiiy no, 그냥 같은 페이지 안에 두지 만 _page div_는 _popup_의 직접적인 부모 여야한다. 예 : '

popup
Omar

+1

저는 잘 모릅니다. 이제는 완벽하게 작동합니다! 고맙습니다! – Raiiy

관련 문제