2012-08-03 8 views
0

저는 Ajax 기반 워크 플로우로 옮길 웹 애플리케이션이 있습니다. 현재 페이지 URL을 기반으로하는 자체 라우팅 메커니즘으로 자바 스크립트를로드합니다. Ajax '페이지'를 추적하기 위해 해시 태그를 사용합니다. 문제는 콘텐츠가 변경 될 때 어떻게 페이지를 다시 초기화 할 수 있습니까? 라우팅 메커니즘을 재실행 할 수는 있지만 기존 이벤트를 실수로 다시 작성하고 다시 연결하고 싶지는 않습니다. 나는 이상적인 솔루션에서 Ajax 완료시 모든 이벤트에 대해 전역 정리를 수행하고 전체 Javascript를 다시 초기화한다고 생각합니다. 그런 식으로, 나는 요소가 사라 졌는지 또는 이벤트에 붙어 있거나 비슷한 지에 대해 걱정할 필요가 없을 것입니다.자바 스크립트 Ajax 다시 초기화

이 문제를 해결하는 가장 좋은 해결책은 무엇입니까? init는 라우팅 기능 또는 초기 기능 인으로

$.on("hashchange", init); 

:

답변

3

당신은 jQuery의 hashchange 이벤트를 사용할 수있다. 여기

내가 무엇을 사용의 예 :

function route() { 
    var loc = (location.hash && location.hash.split("#")[0]) || location.pathname; 

    if (loc.search("profile") !== -1) { 
     // do profile page stuff 
    } 
    if (loc.search("home") !== -1) { 
     // do home stuff 
    } 
} 

$.on("hashchange", route); 
+1

어떤 인수를 전달하고, 단지 하나 개의 함수를 호출하지 않는 경우, 당신은 그것을 단순화 할 수 있습니다에'$ CSTE 연구진 ('hashchange', 경로) ; '익명의 함수 래퍼가 당신을 위해 아무것도하지 않기 때문에. –

+0

오른쪽, 좋은 지적 – Austin