2013-11-15 223 views
2

我真的不太瞭解javascript,但我正在嘗試使用下面的代碼,它運行良好。我遇到的問題是如果在「選擇」選項末尾添加「...」或「:」,代碼將不再有效。jQuery下拉菜單顯示/隱藏div

http://jsfiddle.net/fj63g/58/

HTML:

<select id="dropDown"> 
    <option>Choose</option> 
    <option value="div1">Show Div 1</option> 
    <option value="div2">Show Div 2</option> 
</select> 

<div id="div1" class="drop-down-show-hide">div 1</div> 
<div id="div2" class="drop-down-show-hide">div 2</div> 

腳本:

$('.drop-down-show-hide').hide(); 

$('#dropDown').change(function(){ 
$(this).find("option").each(function() 
{ 
$('#' + this.value).hide(); 
}); 
    $('#' + this.value).show(); 

}); 

任何幫助,非常感謝!謝謝!

回答

4

試試這個:

$('.drop-down-show-hide').hide(); 

$('#dropDown').change(function() { 
    $('.drop-down-show-hide').hide()  
    $('#' + this.value).show(); 

}); 

Updated fiddle

OR

要解決你的代碼,只需添加value=""Choose選項

<select id="dropDown"> 
    <option value="">Choose...</option> 
    <option value="div1">Show Div 1</option> 
    <option value="div2">Show Div 2</option> 
</select> 
<div id="div1" class="drop-down-show-hide">div 1</div> 
<div id="div2" class="drop-down-show-hide">div 2</div> 

這裏是一個updated fiddle fixing your code

+0

這很棒 - 而且更簡單!謝謝! – thomaskessel

+0

很高興幫助.. – karthikr

+0

yoou如何使用與主選擇相同的功能在「下拉式顯示 - 隱藏」中添加下拉菜單? –

0

HTML:

<select id="dropDown"> 
    <option value="">Choose...</option> 
    <option value="div1">Show Div 1</option> 
    <option value="div2">Show Div 2</option> 
</select> 

<div id="div1" class="drop-down-show-hide">div 1</div> 
<div id="div2" class="drop-down-show-hide">div 2</div> 

腳本:

$('.drop-down-show-hide').hide(); 

$('#dropDown').change(function(){ 
$(this).find("option").each(function() 
{ 
    if (this.value != '') 
    { 
     $('#' + this.value).hide(); 
    } 
}); 
$('#' + this.value).show(); 

}); 

發表卡思答案是更好的,但是這是這樣你就可以看到它是失敗。

最終,因爲您告訴它隱藏了一個不存在的項目,所以它在該行上打破了,而沒有顯示您的div。

的JavaScript試圖解決:

$('#' + undefined).hide(); 

這是不可能的,因此將拋出一個錯誤,而不是顯示你的div。

卡思的答案是最有效的,但你也可以通過給「選擇」選項提供一個值,然後在顯示/隱藏時檢查它來克服它。

+0

感謝您的幫助!我非常感謝知道爲什麼我的代碼無法正常工作。 – thomaskessel

+1

沒問題。雖然在如何做某件事方面得到答案很好,並且可以讓您解決問題,但首先解決問題的一些解釋有助於您在將來避免再次出現問題。 ; 0) – Jon

0

我建議出從這個小提琴嘗試這種 fiddle

HTML:

<select id="dropDown"> 
    <option value="">Choose...</option> 
    <option value="div1">Show Div 1</option> 
    <option value="div2">Show Div 2</option> 
</select> 

<div id="div1" class="drop-down-show-hide">div 1</div> 
<div id="div2" class="drop-down-show-hide">div 2</div> 

JS:

$('.drop-down-show-hide').hide(); 

$('#dropDown').change(function(){ 
    $(this).find("option").each(function(){ 
     $("#" + $(this).val()).hide(); 
     console.log($(this)); 
    });  
    $("#" + $(this).val()).show(); 
}); 

它保留了jquery樣式的語法。

-2
<script type="text/javascript" src="js/jquery-1.10.2.js"></script> 

<script> 
function namedata(data) 
{ 
    if(data=='A') 
    { 
     $('#diva').css('display','block'); 
     $('#divb').css('display','none'); 
    } 
    else if(data=='B') 
    { 
     $('#divb').css('display','block'); 
     $('#diva').css('display','none'); 
    } 
} 
</script> 



<p><label>Choose Name</label> 
     <select name="name" onchange="return namedata(this.value);"> 
      <option>-Select-</option> 
      <option value="A">A</option> 
      <option value="B">B</option> 
     </select> 
     </p> 

    <div style="display:none;" id="diva">My Div A</div> 
    <div style="display:none;" id="divb">My Div B</div> 
+0

只需下載jquery-1.10.2.js並運行此代碼 – Rima

+1

請添加一些上下文,爲什麼您認爲這可以解決原始問題,理想情況下它爲什麼比其他答案更好 –

+0

此代碼簡單易用瞭解。我們也可以在下拉列表中輕鬆添加更多選項 – Rima