2017-03-29 50 views
0

单击按钮时,“完成”回调下方效果很好。但使用浏览器后退按钮,完成的回调不会再次被调用。用pjax在后退按钮上重新初始化javascript

$.pjax({ 
     url: $this.attr("href"), 
     container: '#div-section', 
     push: true 
}).done(function() { 
     $object.init();     
}); 

有一些另一种方式来开枪比做其他pjax端的JavaScript等(因为它不工作)?

回答

0

找到解决方案,但有可能是我想只有一个页面这样的处理器 -

$(document).on("ready pjax:success", function(){ 
     //initialize all javascripts here 
}); 

编辑

上述方案导致双重绑定上pjax电话,一旦进入pjax:成功之后第二次完成事件回调。要在后退/前进或pjax上只执行一个绑定,我们可以按照以下方式进行。在这种情况下,可以使用globalEventDirection来有条件地在pjax中进行绑定:成功离开init以在单击按钮时完成。但是使用后退和前进按钮,init将在pjax内完成:成功

globalEventDirection = undefined; 
    $(document).on("pjax:popstate", function(event){ 
      globalEventDirection = event.direction; 
     }); 

    $(document).on("pjax:success", function(event){ 
     if(globalEventDirection === "back" || globalEventDirection === "forward") { 
      //reinitialize javascript     
      globalEventDirection = undefined; 
     } 
    });