2014-11-04 60 views
0

我使用jQuery移动V1.3.2jQuery Mobile的,INIT绑定页面事件只有一次

对于一些原因,我想成立一​​个全球性pagechange事件准备所有我的网页:

var Front = { 

    initDom : function($dom) { 

     // here i can bind some events in my page 

     $(".someButton",$dom).bind("tap",function(){ 
      alert("some actions"); 
     }); 

     // etc..... 

    }); 

} 

$(document).on("pagechange", function(event, data) {  
    Front.initDom($(data.toPage)); 
}); 

这很好。但是每次换页都会触发它。有时它会两次启动相同的事件,这会导致一些错误。

现在我已经测试过要处理事件pageinitpagecreate,但两者都在页面准备就绪之前触发并且$("ui-page-active");为空。

我虽然关于一些setTimeout,但这绝对是一个坏主意。

我也尽管在第一个pageinit初始化所有内容并解除绑定。但称为页面的Ajax不会受到约束。

它有一些很好的workarround?

+0

如果你想一次做一下第一页只有当DOM准备就绪时,才可以使用'.one(“pagebeforeshow”)或'pageshow'。要添加绑定/附加侦听器,请使用'pageinit'通过其'ID'委托给页面。 – Omar 2014-11-04 14:55:20

+0

是的,它会工作,但我在全球范围内这样做。对于所有页面。不仅用于某些页面。 – 2014-11-04 14:56:23

+0

这取决于你想要做什么。 http://stackoverflow.com/a/20459433/1771795 – Omar 2014-11-04 15:41:07

回答

1

您可以使用pageinit,然后得到事件目标对象的页面的ID:

$(document).on("pageinit", function(e){ 
    alert(e.target.id); 
}); 

DEMO

+0

这是我需要的exatly! – 2014-11-06 09:15:41

相关问题