2009-08-25 167 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