2015-01-06 2 views
2

Я пытаюсь использовать $ .mobile.changePage внутри всплывающего якоря, чтобы перейти на другую страницу, но когда я нажимаю на якорь внутри всплывающего окна, страница меняется, а затем назад к предыдущей странице снова.JQuery Mobile changepage изменяет страницу, не возвращаясь на предыдущую страницу

Я попытался это решение: changePage "jumps" back to old page с помощью этого: $ (документ) .bind ("mobileinit", функция() { $ .mobile.pushStateEnabled = FALSE; });

, но это тоже не сработало.

Это, как я построил свою страницу:

<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> 

Это в основном создает ListView и при нажатии любого предмета, откроется всплывающее окно. Если вы нажмете кнопку во всплывающем окне, она должна перенаправить вас на другую страницу. В этот момент jquery mobile перенаправляет меня на другую страницу, а затем возвращается на предыдущую страницу.

У кого-нибудь есть идеация, что может случиться?

+1

удалить 'data-rel =" назад "' из 'id =" linkConfirmacaoDialog "'. – Omar

+0

Это сработало! Так что, очевидно, я не могу поверить, что не видел этого ... Большое спасибо! – Raiiy

ответ

3

Проблема вызвана data-rel="back" в #linkConfirmacaoDialog кнопка подтверждения. Когда вы нажимаете эту кнопку, вы даете два разных навигационных ордера. Случается, что вы переходите к целевой странице, а затем возвращаетесь в историю. Используйте data-rel="back" только, если вы хотите закрыть popup и оставайтесь на одной странице.

Другой вопрос, всплывающее окно ДИВ не должны быть обернуты в 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 только для того, чтобы обернуть всплывающее окно? На самом деле то, что я пытался сделать, это переопределить слушателя из '# linkConfirmacaoDialog', когда щелкнут любой элемент моего списка, потому что страница для перенаправления будет динамической. Я утверждал, что когда я это делаю, я переопределяю слушателя и не добавляю нескольких слушателей. – Raiiy

+0

@ Raiiy нет, просто храните его на одной странице, но _page div_ должен быть прямым родителем _popup_. например '

popup
' – Omar

+1

Я не знал, теперь он отлично работает! Спасибо! – Raiiy

Смежные вопросы