2010-10-18 100 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){ 
... 
}