2014-02-24 2 views
0

내 페이지에 여러 개의 탭이 있습니다. 탭을 클릭하면 해당 탭에 div가 첨부 된 차트가 표시됩니다. 탭을 클릭하면 먼저 페이지를 새로 고친 다음 탭 아래에로드 할 스크립트를 실행해야합니다. ,페이지의 탭을 클릭하면 전체 페이지를 새로 고치십니까?

$("a[href=#tab22]").click(function() { 
     $.ajaxSetup({ cache: false }); 
     load_chart1(); 
      load_chart2(); 
}); 

내가이 줄을 삽입하면

location.reload(); 

잘 load_chart1() 함수 호출 befefore, 내가 볼 해달라고 기본 페이지가로드가 tab22 내용을 참조 : 예를 들어, 나는 스크립트의이 작품이 chart1과 chart2처럼.

쉬운 방법이 있나요?

tab22를 클릭하면 전체 페이지가 새로 고쳐 져야하고 tab22 아래의 기능이 실행되어야합니까?

+0

, 당신은 당신의 클릭의 기본 동작을 방지 할 수 있습니다. 아약 응답을 받고 함수를 호출하십시오. 실제 페이지 새로 고침이 필요하면 조금 더 작업해야합니다 ... 가장 쉬운 방법은 스크립트에 업데이트가 필요하다는 것을 알리는 쿼리 문자열 (또는 해시)입니다. 뭔가가 : http://yourdomain.com/page?refreshFromTab=1 (여기서 스크립트는 refreshFromTab을 찾습니다) – Jack

답변

0

AJAX를 통해 데이터를 새로 고치지 않으려면 URL의 해시를 업데이트하고 페이지가로드 될 때 해당 값을 확인해야합니다. 문서로드 처리기 예를 들어

: 당신이 당신의 페이지의 일부를 업데이트 할 아약스를 사용하는 경우

var hash = window.location.hash, 
    curtab; 

console.log(hash); 

switch(hash) { 
    case "tab-1": 
     curtab = document.getElementById('tab-1'); 
     break; 
    case "tab-2": 
     curtab = document.getElementById('tab-2'); 
     break; 
    case "tab-3": 
     curtab = document.getElementById('tab-3'); 
     break; 
    case "tab-4": 
     curtab = document.getElementById('tab-4'); 
     break; 
    default: 
     curtab = document.getElementById('tab-1'); 
     break; 
} 

curtab.style.display = 'block'; 
curtab.innerHTML = "pasted from js"; 

$('a').on('click', function(e) { 
    e.preventDefault(); 
    window.location.hash = $(this).attr('href'); 
    window.location.reload(); 
}); 
관련 문제