2013-10-22 2 views
0

내 pjax는 정상적으로 작동하지만 다른 pjax 이벤트에서 다른 작업을 수행해야합니다. 여기 내 pjax입니다 :PJAX 이벤트를 구별

//MainMenu 
$(document).pjax('.menu li a', '.pjax_submenu', { fragment: '.pjax_submenu', timeout: 5000}); 

//SubMenu 
$(document).pjax('.submenu li a', '.submenu', { fragment: '.submenu', timeout: 5000 }); 

Basicly 나는이 두 - 메뉴를 가지고 pjax:startpjax:end에 물건을하고 싶어. 불행히도 이러한 이벤트는 항상 호출됩니다. 예컨대 :

$("body").on("pjax_event", ".pjax_submenu", function(e, category){ 
    $(document).on('pjax:start', function() { 
     if(category === 1){ 
      $('.pjax_submenu').fadeOut(500); 

     } else{ 
      $('.info').slideUp(500); 

     } 
    }); 
    $(document).on('pjax:end', function() { 
     if(category === 1){ 
      $('.pjax_submenu').hide().fadeIn(500); 
     } else{ 
      $('.info').hide().slideDown(500); 
     } 
    }); 
}); 

$("body").on("click", ".menu li a", function() { 
    $(".pjax_submenu").trigger("pjax_event", 1); 
}); 
$("body").on("click", ".submenu li a", function() { 
    $(".pjax_submenu").trigger("pjax_event", 2); 
}); 

나는 메뉴 또는 하위 메뉴 링크를 클릭하면 그것은 중요하지 않습니다, 결과가 모든 pjax 코드의 실행이다. 내가 이런 식으로 할 경우에도 :

$("body").on("click", ".menu li a", function() { 
    $(document).on('pjax:start', function() { stuff } 
    $(document).on('pjax:end', function() { stuff } 
}); 
$("body").on("click", ".submenu li a", function() { 
    $(document).on('pjax:start', function() { stuff } 
    $(document).on('pjax:end', function() { stuff } 
}); 

그것은 여전히 ​​실행> 모두 < 내가 다른 클릭 된 항목에 pjax 이벤트를 구별하는 방법 주위에 내 머리를 얻을 수없는 것.

내가하고 싶은 일은 메인 메뉴 포인트에서 콘텐츠를 페이드하고 하위 메뉴 정보 상자로 슬라이드 업/다운을 사용하는 것입니다.

추가 정보가 필요하면 알려 주시면 감사하겠습니다.

답변

0

내 솔루션을 공유하고 싶었지만 너무 좋지 않았습니다. 또한 그것은 내가 찾은 유일한 해결책입니다 ...

읽을 수있는 pjax 버전이 필요합니다!

"pjax : end"에 대한 pjax.js를 검색하십시오. 아래 paragrpah를 추가하십시오.

fire('pjax:end', [xhr, options]) 

if(options.menu == 'main'){ 
    fire('pjax:main:end', [xhr, options]) 
}else if(options.menu == 'sub'){ 
    fire('pjax:sub:end', [xhr, options]) 
} 

pjax : start!

//MainMenu 
$(document).pjax('.menu li a', '.pjax_submenu', {menu: 'main',fragment:'.pjax_submenu', timeout: 5000}); 
//SubMenu 
$(document).pjax('.submenu li a', '.submenu', { menu: 'sub',fragment: '.submenu', timeout: 5000 }); 

를하고 별도의 이벤트가 짜잔 :

그 다음으로 pjax 링크를 선언 할 수이 미래에 누군가가 도움이

//... for Main Menu 
$(document).on('pjax:main:start', function() { 
    console.log('pjax:main:start'); 

}); 

$(document).on('pjax:main:end', function() { 
    console.log('pjax:main:end'); 

}); 

//... for Sub Menu 
$(document).on('pjax:sub:start', function() { 
    console.log('pjax:sub:start'); 

}); 
$(document).on('pjax:sub:end', function() { 
    console.log('pjax:sub:end'); 

    $('.info') .slideDown(500); 
}); 

희망을! 건배!