2010-07-05 45 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

相关问题