2017-03-29 14 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 
}); 

EDIT

溶液の上には一度pjax内、pjaxコールにデュアルバインディングにつながる:成功は続きます2回目の終了イベントコールバック。バインディングをバック/フォワードまたはpjaxで1つだけ実行させるには、以下のようにします。この場合、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; 
     } 
    }); 
関連する問題