2012-05-23 5 views
8

저는 현재 pjax를 사용하고 있습니다 만 훌륭하게 작동하지만 두 개의 jQuery 함수를 실행해야합니다. 하나는 pjax가 새 URL을로드하고 하나가 새 URL이로드 된 후에로드해야합니다. 어떻게하면됩니까?pjax로드 전후에 jQuery를 실행하는 방법은 무엇입니까?

다음 두 가지 변형을 시도했지만 어느 것도 작동하지 않는 것 같습니다.

첫 번째 시도 :

$("a").pjax("#main").live('click', function(){ 

    //Function Before Load 
    // Function After Load 
}) 

두 번째 시도 :

$("body").on("click", "a", function(){ 

    //Function Before Load 

    $(this).pjax("#main"); 

    //Function After Load 

    return false; 
}); 
+1

의 코드 예제는 [문서]에서 무엇을하려고 했습니까 (https://github.com/defunkt/jquery-pjax#events)? –

+0

@ChristianVarga 나는 그 부분을 놓쳤다. jQuery 섹션이 서버 측으로 이동 한 후에 끝난다고 생각했다. – Dan

답변

24

그들은 당신이 두 개의 이벤트를 발생합니다

pjax을 필요에 대한 자신의 문서 herepjax 불이 개 행사에 말했듯 컨테이너에로드 할 것을 요청했습니다. 응답 본문 int o :

pjax : start - pjax ajax 요청이 시작되면 시작됩니다.

pjax : end - pjax ajax 요청이 끝날 때 시작됩니다.

그리고이

$('a.pjax').pjax('#main') 
$('#main') 
    .on('pjax:start', function() { //do what you want to do before start }) 
    .on('pjax:end', function() { //after the request ends }); 
2
$("body").on("click", "a", function(){ 

$(this).pjax("#main"); 
$('a.pjax').pjax('#main') 
$('#main').on('pjax:start', function() { /* your code before ajax load */ }); 
$('#main').on('pjax:end', function() { /* your code after ajax load */ }); 

    return false; 
});