2011-01-27 3 views
1

私はjqueryタブを使用していますが、タブから呼び出される情報は配列から来ていますが、言語の切り替えもあるため、選択した言語によってタブの名前と内容が変わります。IEがjquery関数で配列を呼び出さないのはなぜですか?

私のコードは、タブ名が呼ばれているがタブ内のコンテンツはIE以外のすべてのブラウザで機能します。

これはタブのコードです。

<script type="text/javascript"> 
$(document).ready(function() { 

//When loaded 
$(".tab_content").hide(); //Hide content 
$("ul.tabs li:first").addClass("active").show(); //Show tab one 
$(".tab_content:first").show(); //Show tab one content 

//On Click Event 
$("ul.tabs li").click(function() { 

$("ul.tabs li").removeClass("active"); //Remove any "active" 
$(this).addClass("active"); //Add "active" class to current tab 
$(".tab_content").hide(); //Hide all tab content 

var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content 
$(activeTab).fadeIn(); //Fade in the active ID content 
return false; 
}); 
}); 
</script> 

これは、各言語のコンテンツを呼び出すためのコードです。

<script type="text/javascript"> 
     function getLanguageResources(){ 
    var fr = new Array(); var en = new Array(); 

en['greeting'] = "Hi!"; fr['greeting'] = "Salut!"; 


    var resources = new Array(); 
    resources['en'] = en; 
    resources['fr'] = fr; 


    return resources; 
} 


function changeLanguage(lang){ 
var langResources = getLanguageResources()[lang]; 

$("span[name='lbl']").each(function(i, elt){ 
    $(elt).text(langResources[$(elt).attr("caption")]); 
}); 

$("p[name='lbl']").each(function(i, elt){ 
    $(elt).text(langResources[$(elt).attr("caption")]); 
    }); 

$("a[name='lbl']").each(function(i, elt){ 
    $(elt).text(langResources[$(elt).attr("caption")]); 
    }); 
} 

$(document).ready(function() { 
$("input[name='languagebutton']").click(function() { 
    changeLanguage($(this).val()); 
}); 

$(document).ready(
    changeLanguage("en")); 

}); 

は、私はinititallyタブ名が表示されませんでした、私はタブが現れタグを使用しますが、コンテンツの残りがなかったとき、私の入力されたテキストのタグを変更してみました。

ありがとうございました!

+0

まず第一に、より詳細な情報を追加するとき、あなたの質問を更新します。 SOはフォーラムではなく、回答は他のユーザーに応答するものではありません。あなたが登録していないので、これはあなたの場合にするのが難しいでしょう。このアカウントはCookieに基づいています。この質問に登録してフラグを立てると、このアカウントを登録アカウントにマージできます。第二に、SOは特定の質問をすることではなく、「ここにはコードの不必要な部分がありますが、何が間違っていますか?あなたがコードルートのcraptonに行きたい場合は、姉妹サイト[codereview.SE](http://codereview.stackexchange.com/)をご覧ください。 – Will

答えて

0

私の実装が正しいとすれば、あなたのコードをチェックしました。すべてがうまくいくようですが、それはFFとIEで動作しています。

<ul class="tabs"> 
<li><a href="#tab1"><span name="lbl" caption="greeting"></span></a></li> 
<li><a href="#tab2"><span name="lbl" caption="hello"></span></a></li> 
<li><a href="#tab3"><span name="lbl" caption="greeting"></span></a></li> 
<li><a href="#tab4"><span name="lbl" caption="hello"></span></a></li> 
</ul> 

<div class="tab_content" id="tab1"> 
    tab 1 
    <p name="lbl" caption="greeting"></p> 
</div> 
<div class="tab_content" id="tab2"> 
    tab 2 
    <p name="lbl" caption="hello"></p> 
</div> 
<div class="tab_content" id="tab3"> 
    tab 3 
    <p name="lbl" caption="greeting"></p> 
</div> 
<div class="tab_content" id="tab4"> 
    tab 4 
    <p name="lbl" caption="hello"></p> 
</div> 

<input type="button" name="languagebutton" value="en"/> 
<input type="button" name="languagebutton" value="fr"/> 

はこれです:

は、私は、変数など

jQuery: 
function getLanguageResources(){ 
    return { 
     "fr":{ 
      'greeting':'Salut!', 
      'hello':'Hello FR' 
     }, 
     "en":{ 
      'greeting':'Hi!', 
      'hello':'Hello EN' 
     } 
    } 
} 
function changeLanguage(lang){ 
var langResources = getLanguageResources()[lang]; 

$("span[name='lbl']").each(function(i, elt){ 
    $(elt).text(langResources[$(elt).attr("caption")]); 
}); 

$("p[name='lbl']").each(function(i, elt){ $(elt).text(langResources[$(elt).attr("caption")]); }); 
$("a[name='lbl']").each(function(i, elt){ $(elt).text(langResources[$(elt).attr("caption")]); }); 
} 

$(document).ready(function() { 

//When loaded 
$(".tab_content").hide(); //Hide content 
$("ul.tabs li:first").addClass("active").show(); //Show tab one 
$(".tab_content:first").show(); //Show tab one content 

//On Click Event 
$("ul.tabs li").click(function() { 

$("ul.tabs li").removeClass("active"); //Remove any "active" 
$(this).addClass("active"); //Add "active" class to current tab 
$(".tab_content").hide(); //Hide all tab content 

var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content 
$(activeTab).fadeIn(); //Fade in the active ID content 
return false; 
}); 


$("input[name='languagebutton']").click(function() { 
    changeLanguage($(this).val()); 
}); 
changeLanguage("en"); 
}); 

そして、HTML、私が作成したエン、あなたは1、FRが不要にそれをすべてを置くことができるようアレイ構造を変更しました私のためにうまくいけば、おそらくnameの代わりにidを使うべきですが、うまくいきます。

まだ動作していない場合は、HTML、jqueryコードをどこかにオンラインで投稿してください。

乾杯

G.

関連する問題