2011-10-02 46 views
9

我基本上需要一个自定义函数,以便仅在例如从主页单击#reviews页面时使用。jQuery Mobile:获取前一页的ID

下面是当前的代码我使用:

$(document).bind("mobileinit", function(){ 
    $('#reviews').live('pagebeforeshow',function(event){ 
    var cpage = $.mobile.activePage.attr('id'); 
     if (cpage == 'home') { 
      addPages(); 
     } 
    }); 
}); 

的问题是,即使是使用“pagebeforeshow”它正在使用的页面的ID它是关于作为活动页面转换到,在这种情况下,“审查”而不是回家,从而导致if语句失败。

所以我的问题是,在这个例子中,我将如何得到上一页的ID,以确保它实际上来自#home页面?

回答

23

要完成的答案:你会得到一个jQuery对象回来,所以获得页面的ID此操作:

$("#page-id").live('pagebeforeshow', function(event, data) { 
    console.log("the previous page was: " + data.prevPage.attr('id')); 
}); 

data.prevPage越来越以前的页面作为jQuery对象,

.attr('id')正在从该jQuery对象获取id。

+0

只是为其他人提供一个参考,'pagebeforeshow'事件现在已被弃用,并且很快就会被移除。请参阅此页面进行更换:https://api.jquerymobile.com/pagebeforeshow/ –

6

pagebeforeshow事件处理程序实际上得到2个参数:事件和用户界面。您可以从ui访问前一页。这是从jquery-mobile event docs一个例子:

$('div').live('pageshow', function(event, ui){ 
    alert('This page was just hidden: '+ ui.prevPage); 
}); 

这些PARAMS是所有4页显示/隐藏事件相同。

+0

谢谢,这回答了我的问题 – tblakey89

+0

太好了。您应该将其标记为已接受。 – mkriheli