2014-02-24 170 views
0

我的頁面上有幾個標籤。當我點擊一個標籤時,我會在該標籤中顯示附加div的一些圖表。當我點擊一個標籤時,我需要先刷新頁面,然後執行將在該標籤下加載的腳本。例如,我有這樣的一段腳本:當我點擊頁面上的標籤頁時,如何刷新整個頁面?

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

如果我插入這條線,

location.reload(); 

權befefore load_chart1()函數調用,默認的頁面加載,我不看的見tab22內容,如chart1和chart2。

有沒有簡單的方法來做到這一點?

當我點擊tab22時,整個頁面應該刷新和功能在tab22下應該執行?

+0

如果您正在使用AJAX來更新頁面的一部分,你要阻止你點擊的默認操作。獲取ajax響應,然後調用你的函數。如果您需要實際刷新頁面,則需要更多工作......最簡單的方法是查詢字符串(或散列),通知您的腳本需要更新。類似於: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(); 
});