2010-07-05 72 views
0

該列表中的第一個新的。請原諒任何失禮....瀏覽器不在jquery下的下拉列表選項鍊接

這是HTML ...(Q1..not確保語法選擇的選項,但是這似乎工作...)

<select> 
<option class=" " value="choose" selected="yes" SELECTED>choose language</option> 
<option class=" turnoffbuttonenglish" value="japanese" >日本語 </option> 
<option class=" turnoffbuttonjapanese" value="english" >English </option> 
<option class="turnonboth" value="both" >both </option> 
</select> 

每個選項的選擇要在頁面中顯示哪種語言和iframe。

這裏似乎沒有工作(我認爲這個問題是在這裏和其他地方沒有在我的代碼...)

有三個選項的代碼段類似jquery的。但下面是班級turnoffbuttonjapanese的例子。 (名字是傳統的,它真正體現出english..class隱藏顯示無...

$('.turnoffbuttonjapanese').click(function() { 
$currentLanguage ="2" 
$('.japanese').addClass("hidden"); 
$('.english').removeClass("hidden"); 
$currentIFrame.contents().find(".japanese").each(function(index, item) { 
$(item).addClass("hidden"); 
}); 
$currentIFrame.contents().find(".english").each(function(index, item) { 
$(item).removeClass("hidden"); 
}); 
}); 

這似乎在Opera工作,但不是在資源管理器!! ??? 當我選擇什麼也沒發生。

相反,如果我有

<div class=" english hidden turnoffbuttonenglish"> <a 
    class=" turnoffenglish" title="see 日本語 page">日本語&nbsp;<img 
    src="images/chopsticks150.png" height="100%" alt="chopsticks"> </a></div> 

<div class=" japanese turnoffbuttonjapanese"><a 
    class=" turnoffjapanese" title="see ENGLISH page">English&nbsp;<img 
    src="images/knifeandfork150.png" height="100%" alt="knife and fork"></a> </div> 

這個工程... ???

+0

我無法理解您的問題,您是否能夠在http://jsfiddle.net上發佈它? – Marko 2010-07-05 04:14:27

+0

謝謝你提出這個建議。尼克似乎已經得到了我正在拍攝的東西...必須說我從來沒有聽說過jsfiddle ..看起來很有趣,並會更多地關注它,但不值得這件事。 – user383363 2010-07-10 17:05:33

回答

0

不是依靠click事件的<option>的(這將無法正常工作跨瀏覽器,你所看到的),而不是由價值去(如果可能的話,給那<select>的ID,使它更清潔),就像這樣:

$('#mySelectID').change(function() { 
    if($(this).val() == "english") { 
    $currentLanguage = "2"; 
    $('.japanese').addClass("hidden"); 
    $('.english').removeClass("hidden"); 
    $currentIFrame.contents().find(".japanese").addClass("hidden"); 
    $currentIFrame.contents().find(".english").removeClass("hidden"); 
    } 
}); 

究其原因,第一<select>版本不起作用是因爲並非所有瀏覽器甚至在<option>上觸發了click事件,因此您的代碼永遠無法運行。採取這種方法將會工作並且更加跨瀏覽器穩定。如果您希望在發生blur之前不會觸發change的瀏覽器立即生效,可以使用.bind()更頻繁地運行它,只需將.change(function() {替換爲.bind('change click', function() {即可。

你也可以重新工作一下,不確定你的總體意圖,例如你可以隱藏所有的意圖,然後顯示你選擇的值,而不是每個選項的if,使你的代碼更短。

+0

非常感謝soooooo的清晰解釋。我只是不知道點擊沒有開火(看起來很瘋狂:我點擊了,你開火了!),但神的命令也是如此......無論如何,你的解決方案似乎是我一直在尋找的。非常感謝...給自己一杯啤酒.. :-) ps你也許是對的重新思考吧... – user383363 2010-07-10 16:59:21

+0

@ user383363 - 歡迎:)記得接受一個答案,如果它可以幫助通過左邊的複選標記,它會幫助您更快地獲得未來問題的答案......同樣,歡迎來到SO! – 2010-07-10 17:38:29