2013-11-15 228 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