2010-10-18 98 views
1

我想显示第二个选择元素,只有当第一个选项的某个选项被选中。显示基于选择选择的元素 - jQuery,HTML

应该直截了当,但它不起作用。

所以我有几个选择元素的类“一”,每个选择o类“两”后面。 在文档就绪功能中,我首先隐藏所有选择类“2”:$('.two').hide();工作正常。
然后我有一个函数(也在文档就绪函数中)显示下一个类“two”的选择,如果从选择类“one”中选择了某个值。

$('.one').change(function() { 
    var two= $(this).next('.two'); 
    if ($(this).val()==3){ 
     if(two.is(':hidden')) { 
      two.fadeIn(50); 
     }else{ 
      two.fadeOut(50); 
     } 
    } 
}); 

有人能告诉我我做错了什么吗?

+0

您可以提供HTML快照? – Alpesh 2010-10-18 17:37:21

回答

1

最有可能你有两个选择之间的其他元素,所以你需要使用nextAll方法这样

var two= $(this).nextAll('.two:first'); 

next(selector)方法将返回正好接下来兄弟姐妹如果它匹配选择器..

此外,我相信你有国际单项体育联合会的嵌套有误。现在你显示/隐藏只有当值是3(这两个隐藏和显示情况,如果.one的值为3)

例子:http://jsfiddle.net/UXS2X/

变化

if ($(this).val()==3){ 
     if(two.is(':hidden')) { 
      two.fadeIn(50); 
     }else{ 
      two.fadeOut(50); 
     } 
    } 

if ($(this).val()==3){ 
     if(two.is(':hidden')) { 
      two.fadeIn(50); 
     } 
    } 
else{ 
     two.fadeOut(50); 
    } 
+0

“最有可能你在这两个选择之间有其他元素” - 是的,这是问题,有一个换行符。 – 2010-10-18 18:07:29

+0

把第二选择在div中,现在它工作得很好。谢谢! – 2010-10-18 18:08:15

0

试试这个:

if ($('select.two option:selected').val()==3){ 
... 
}