jQuery Mobile - 如何根据前一页更改页面行为

时间:2013-09-18 14:17:52

标签: javascript jquery jquery-mobile

我的应用中有三个页面:#main,#new和#existing。

每次#new加载,我希望它检测它是否来自#menu或#existing。根据这些信息,它应该不做任何事情或填写表格。

如何在前一页的正确命令和正确处理DOM方面实现这一目标?

2 个答案:

答案 0 :(得分:2)

根据你的#这些页面需要是dom元素。只需在javascript中使用该变量,并在每个步骤中进行检查。

  • 创建一个新变量,例如 lastPage
  • 每次点击,我都希望像HTML5数据属性一样使用 data-foo
  • 根据导航更改 lastPage
  • 然后做你真正想要的事情。

     var lastPage = '';
    
     /* This code from jQuery Mobile, link is below the code. */
    
     // Define a click binding for all anchors in the page
     $( "a" ).on( "click", function( event ){
         // Prevent the usual navigation behavior
         event.preventDefault();
         // Alter the url according to the anchor's href attribute, and
         // store the data-foo attribute information with the url
     $.mobile.navigate( this.attr( "href" ), {
         lastPage: this.attr("data-foo") // store data here
     });
     // Hypothetical content alteration based on the url. E.g, make
     // an AJAX request for JSON data and render a template into the page.
         alterContent( this.attr("href") );
     });
    

HTML示例

<a href="foo.bar" data-foo="main">Main Page</a>
<a href="foo.bar" data-foo="new">New Page</a>
<a href="foo.bar" data-foo="existing">Existing Page</a>

你可以制作数据 - 任何想要的东西。只有数据很重要,之后您可以使用所有内容。它只是一个HTML5 DOM属性。

编辑:

我建议您查看导航页面。之后你可以更好地理解这个概念。 代码来源:http://view.jquerymobile.com/1.3.2/dist/demos/widgets/navigation/

答案 1 :(得分:1)

利用jQuery-Mobile页面事件,例如pagebeforehidepageshow

  

<强> Demo

在导航之前存储当前页面的id

var prevPage;

$(document).on('pagebeforehide', function () {
  prevPage = $.mobile.activePage[0].id;
});

当目标网页处于活动状态时,检索存储的上一页id

$(document).on('pageshow', function () {
  $(this).find('.destination').text('Previous Page: ' + prevPage);
});