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

言っていましたか? IE6は、IE7/8で主に修正されている問題を抱えています。 – Powerlord

+0

私は答えは分かりませんが、私はまずIE8で試してみたいと思います。そこで動作する場合は、F12キーを押して開発者コンソールを起動し、アドレスバーの横にある破損したページアイコンをクリックしてIE6/7互換モードにします。これによりページがリロードされ、コードに起因するエラーがデベロッパーコンソールに表示されます。 それでも動作する場合は、本物のIE6マシンを探す必要があります。 –

+0

ねえ、これはまだ動作していません。コードへのリンクは以下のコメントにあります。どんな助けでも大歓迎です。 – Johnny

答えて

0

私はライアンはそれとして '.content' と期間の間にスペースを追加することを除いて提案されたすべての変更を行いました必要です。彼はソースコードなしでは知りませんでした。

配列の2番目の項目(クラス名)を選択するように.splice(-1)を[1]に変更しました。 .splice(-1)はIEや他のブラウザでは異なった動作をしているようです。

私はIE 7-8でコードをテストしています。

ソースコード、それは今あるよう:彼らが使用されたIEのバージョン

$(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(); 
    } 
}); 
3

答えがありませんが、可能であればはjQueryui tabs widgetです。それは私の人生をたくさん少なくともこの物を扱いやすくしました。

1

正確happening-何であるかを見てみたが、ここでいくつかの最高の推測されているために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; 
+0

ハッシュマークは含まれていないので、「url.match」はテストされません。存在するかどうかを確認してください。 – Ryan

+0

返信ありがとうございます。 http://www.webtint .net/filebank/jquery/tabswitcher/ – Johnny

+0

申し訳ありませんが、私は仕事をしなければなりませんでした。マンティコアは以下の作業をしたようです – Ryan

関連する問題