2009-08-25 186 views
0
$(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的内容是所有标签组合的。代码与IE不兼容?

任何想法?

+1

他们说了,他们使用这些版本的IE? IE6充斥着大多在IE7/8中修复的问题。 – Powerlord 2009-08-25 18:53:12

+0

我不知道答案,但我会先在IE8中尝试它。如果它在那里工作,然后按F12开启开发者控制台,然后点击地址栏旁边的损坏的页面图标进入IE6/7兼容模式。这将重新加载页面,并且您的代码导致的任何错误都将显示在开发者控制台中。 如果它仍然有效,那么只有这样你才能找到一个真正的IE6机器。 – 2009-08-25 18:54:27

+0

嘿,这仍然不起作用。代码链接在下面的评论中。任何帮助深表感谢。 – Johnny 2009-08-25 19:07:32

回答

0

我做这瑞恩建议除 '内容' 和周期,因为它之间添加空间的所有变化是必要的。没有源代码,他不可能知道。

我将您的.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(); 
    } 
}); 
1

很难说没有一个IE版本和网页来看看究竟是什么happening-但这里有一些最好的猜测:

变化:

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; 
+0

并且不测试“url.match”,因为哈希标记将不会被包含 - 只是看它是否存在 – Ryan 2009-08-25 19:00:51

+0

嘿,感谢您的回复,这里是代码链接: http://www.webtint .net/filebank/jquery/tabswitcher/ – Johnny 2009-08-25 19:00:59

+0

抱歉等待 - 不得不做一些我得到报酬的工作... Manticore似乎已经完成了下面的工作 – Ryan 2009-08-25 19:56:40