2011-01-27 90 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 2011-01-28 12:48:38

回答

0

我檢查了你的代碼,如果我的實現是正確的,一切似乎都很好,它在FF和IE中工作。

我已經改變了數組結構,你可以把它於一身,無需FR,EN變量等

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我已經創建:

<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"/> 

這是對我來說工作很好,你應該使用id而不是name,但它工作正常。

如果它仍然不會工作發佈您的HTML,jQuery代碼在線的地方。

乾杯

G.

相關問題