2014-02-24 138 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(); 
});