2015-07-10 9 views
4

У меня есть два одинаковых HTML-страниц (index.html и page1.html), которые содержат две кнопки:кнопку Назад с JavaScript/JQuery

<ul data-role="listview" data-inset="true" class="ui-listview ui-listview-inset ui-corner-all ui-shadow"> 
    <li class="ui-body ui-body-b ui-li-static ui-body-inherit ui-last-child"> 
     <fieldset class="ui-grid-a"> 
      <div class="ui-block-a"> 
       <button id="submit" type="submit" class="ui-btn ui-btn-a ui-corner-all">Submit</button> 
      </div> 
      <div class="ui-block-b"> 
       <button id="cancel" data-direction="reverse" type="submit" class="ui-btn ui-btn-a ui-corner-all">Cancel</button> 
      </div> 
     </fieldset> 
    </li> 
</ul> 

Если одна кнопка меняется на второй странице, и вторая кнопка действует как кнопка «Назад». (В идеале вы можете использовать первую кнопку для перехода на вторую страницу, а затем использовать кнопку возврата на второй странице, чтобы вернуться к первому.)

Я управляю этим с помощью JavaScript (это относится только к index.html кнопки, но page1.html JS идентичен):

$(document).on('click', '#submit', function() { 
    $(":mobile-pagecontainer").pagecontainer("change", "page1.html", { 
     transition: 'slide',  
     changeHash: true 
    }); 
}); 

$(document).on('click', '#cancel', function() { 
    parent.history.back(); 
    //$.mobile.back(); 
}); 

Но ничего я стараюсь не похоже на работу. Я знаю, что программа достигает parent.history.back();, потому что я установил точки останова в консоли, но кроме этого я понятия не имею, почему он не вернется на первую страницу.

ответ

8

history это свойство от window объекта, а не из HTML-элемента. Таким образом, это должно работать:

window.history.back(); 

вместо:

parent.history.back(); 

В конце концов, вы должны иметь что-то вроде этого:

$('button#cancel').on('click', function(e){ 
    e.preventDefault(); 
    window.history.back(); 
}); 

Это будет также предотвратить поведение по умолчанию ваш submit button

+0

Даже когда я меняю его на 'window.history.back();', он все равно не переводит между страницами. – user3413170

+1

Это потому, что вы являетесь отправкой, и вам нужно предотвратить поведение по умолчанию, я обновил ответ для него –

0

Это всегда сработало для меня, чтобы вернуться.

<a href="javascript:history.back()">BACK</a> 
+0

Если возможно, я хотел бы, чтобы держать их в качестве '' и не '' user3413170

+0

здесь: '<кнопка OnClick = "history.go (-1);"> Возвращайся' –

1

кнопку Ваш отменить еще кнопку отправить, так что собирается вернуться затем отправки формы, посылая вас вперед снова и, по существу расстегивать заднюю маневр.

Применение

return false; 

после parent.history.back();

, чтобы остановить подачу от продолжения

+0

Эта почти работает ! Но для выполнения функции требуется два щелчка, любая идея, почему это может быть? – user3413170

0

Используйте это:

window.history.back(); 
Смежные вопросы