我正在构建一个带有小(基于cookie)选项卡部分的站点,其中包括一个AJAX 天气小部件。我知道我的问题是 AJAX 内容仅在开始时加载,其余选项卡在单击时不会触发事件。我发现了很多解决方案,从使用负载、缓存、url hrefs、id hrefs 等,但在每种情况下,我在尝试实现时都会弄乱语法。我不确定哪种解决方案适用于我(任何/全部?)。这看起来很简单,但我想我已经盯着这个太久了。
这是我的标签html:
<div id="profileTabList" class="tabs">
<a href="#toronto">Toronto</a>
<a href="#montreal">Montreal</a>
<a href="#calgary">Calgary</a>
<a href="#vancouver">Vancouver</a>
</div>
<div class="hr"></div>
<div id="profileTabData" class="both">
<div id="toronto" class="tab_content">
<div class="left">
<div class="ws-widget"><span class="ws-location">Toronto, Canada</span></div>
</div>
<div class="right">
<div class="ws-widget"><span class="ws-location">Moscow, Russia</span></div>
</div>
</div>
<div id="montreal" class="tab_content">
<div class="left">
<div class="ws-widget"><span class="ws-location">Montreal, Canada</span></div>
</div>
<div class="right">
<div id="cbc-montreal"></div>
</div>
</div>
<div id="calgary" class="tab_content">
<div class="left">
<div class="ws-widget"><span class="ws-location">Calgary, Canada</span></div>
</div>
<div class="right">
<div id="cbc-calgary"></div>
</div>
</div>
<div id="vancouver" class="tab_content">
<div class="left">
<div class="ws-widget"><span class="ws-location">Vancouver, Canada</span></div>
</div>
<div class="right">
<div id="cbc-bc"></div>
</div>
</div>
</div>
我正在使用基于 cookie 的 jquery-tabs.js:
$(function(){
function HashTabs(){
var Cookie = $.cookie("offices");
var activeTab = '';
var navIndex = '';
$('.tab_content').hide();
if(!Cookie){
$(".tabs a:first").addClass("active").show();
$(".tab_content:first").show();
} else if (Cookie != "") {
$('.tabs > a:eq('+ Cookie +')').addClass('active').next().show();
activeTab = $('.tabs > a:eq('+ Cookie +')').attr("href");
$(activeTab).fadeIn(0);
}
$(".tabs > a").click(function() {
$(".tabs a").removeClass("active");
$(this).addClass("active");
navIndex = $('.tabs > a').index(this);
$.cookie("offices", navIndex);
$('.tab_content').hide();
activeTab = $(this).attr("href");
$(activeTab).fadeIn(0);
return false;
});
}
$('#profileTabList').each(function(){
return HashTabs();
});
});