$(document).ready(function() {
var url = document.location.toString();
$('.tab').click(function() {
if($(this).is(".active")) {
return;
}
var classy = $(this).attr("class").split(" ").splice(-1);
var innerhtml = $('.content.'+classy).text();
$('#holder').html(innerhtml);
$('.tab').removeClass('active');
$(this).addClass('active');
});
var url = document.location.toString();
if(url.match(/#([a-z])/)) {
//There is a hash, followed by letters in it, therefore the user is targetting a page.
var split = url.split("#").splice(-1);
$('.tab.'+split).click();
}
else {
$('.tab:first').click();
}
});
嘿,我的一位评论者告诉我,这段代码在IE中不起作用。我不能为我的生活找出原因。无论何时切换选项卡,选项卡的内容都不会更改。同时#holder div的内容是所有标签的组合。
有什么想法吗?
答案 0 :(得分:3)
不是您所追求的答案,但如果可以,我会seriously recommend查看jQueryui tabs widget。这让我的生活很多更容易处理这些东西。
答案 1 :(得分:1)
很难说没有IE版本和页面来看看到底发生了什么 - 但这里有一些最好的猜测:
变化:
if($(this).is(".active")) {
为:
if($(this).hasClass("active")) {
变化:
var innerhtml = $('.content.'+classy).text();
到:
var innerhtml = $('.content .'+classy).text(); // note the space
变化:
var url = document.location.toString();
为:
var url = document.location.hash;
答案 2 :(得分:0)
我做了Ryan建议的所有更改,只是在'.content'和期间之间添加了空格。没有源代码,他就不可能知道。
我将.splice(-1)更改为[1],以便我选择数组中的第二项,即类名。看起来.splice(-1)在IE和其他浏览器中表现不同。
我已经使用IE 7-8测试了代码并且它可以正常工作。
现在的源代码:
$(document).ready(function() {
var url = document.location.hash;
$('.tab').click(function() {
if ($(this).hasClass("active")) {
return;
}
var classy = $(this).attr("class").split(" ")[1];
var innerhtml = $('.content.' + classy).text();
$('#holder').html(innerhtml).slideDown("slow");
$('.tab').removeClass('active');
$(this).addClass('active');
});
if (url.match(/#([a-z])/)) {
//There is a hash, followed by letters in it, therefore the user is targetting a page.
var split = url.split("#")[1];
$('.tab.' + split).click();
}
else {
$('.tab:first').click();
}
});