2014-07-09 91 views
0

嗨,我有一些jQuery Mobile的和pageshow工作正常(窃听它的好消息,但是它工作罚款)是这样的:在JQM pageshow作品,pagebeforeshow不

$(document).off('pageshow').on('pageshow', function() { 
    console.log('it happened'); 
}); 

注:我有很多(阅读:失去)缓存的问题,所以我恐怕尽管所有信息相反off()必须留下。你会和我争论,我会保持off(),我会是对的。

确定,但是当我将其更改为

$(document).off('pagebeforeshow').on('pagebeforeshow', function() { 
    console.log('it happened'); 
}); 

它不运行。现在我知道你是应该做类似

$(document).off('pagebeforeshow').on('pagebeforeshow', '#somediv', function() { 
    console.log('it happened'); 
}); 

,但我不希望它是只在这个DIV我想这是对整个文档。

+0

我不得不使用它,我们是开源所以必须使用开放源依赖关系。它基本上是一个浏览器中的秘密撒谎浏览器,一旦你知道它可以使用 – user26676

+0

不需要使用闭源依赖关系。只需为您使用jQm的位编写自己的代码即可。如果您无法弄清楚jqm如何执行某些操作,请查看jqm源代码。 jQm所做的大多数事情,为jQuery提供替代解决方案相对容易(不像jQuery)。 – user1094553

+1

附加到整个“身体”呢? ('pagebeforeshow','body',function()' – Sga

回答

0

当你离开这样一个特定的页面,您可以测试(曾在我的情况):

- >启动循环功能(setInterval的),如果你仍然在该网页上,测试每2秒,如果没有(这意味着你刚刚离开的页面)只执行一次函数

下面是代码:

<script>$('#YOUR_PAGE').bind('pageshow', function(data) { 
     var repeat = setInterval(function() { 
     var page_path = $.mobile.path.parseUrl(window.location).toString().toLowerCase() ; 
     var page_page = page_path.split("#"); 
      if (page_page[1] != "YOUR_PAGE"){ 

      ... 
      DO YOUR THING 
      ... 

      clearInterval(repeat); 
       } 
      }, 2000); 
     }); 
</script>