【问题标题】:How to show/hide divs with multiple select options如何使用多个选择选项显示/隐藏 div
【发布时间】:2014-09-23 10:36:18
【问题描述】:

我一直在使用 jQuery 对 HTML5 表单进行排序,以根据选择菜单中的选定值显示/隐藏 div。但是我遇到了一个问题,如果选择了一个选项,那么它会被更改,原始选择及其 div 不会被隐藏,新的选择会添加到页面中,如果用户生成多个选择菜单更改他们在选择菜单中的选择。我希望一双新的眼睛能帮助并指出解决方案,因为我希望 div 根据值显示/隐藏,或者根本没有选择。

HTML 代码

<div class="country">
  <h1>Pick country</h1>
  <select class="country_option">
    <option value="england">England</option>
    <option value="scotland">Scotland</option>
    <option value="ireland">Ireland</option>
    <option value="wales">Wales</option>
  </select>
</div>

<div class="not-selected">
  <p>Please select a country to be able to pick the region.</p>
</div>

<div class="england" id="england">
  <h3>Pick region in England</h3>
  <select>
    <option value="North">North</option>
    <option value="South">South</option>
    <option value="East">East</option>
    <option value="West">West</option>
    <option value="Midlands">Midlands</option>
  </select>
</div>

<div class="scotland" id="scotland">
  <h3>Pick region in Scotland</h3>
  <select>
    <option value="North">North</option>
    <option value="South">South</option>
  </select>
</div>

<div class="ireland" id="ireland">
  <h3>Pick region in Ireland</h3>
  <select>
    <option value="Northern">Northern</option>
    <option value="Republic">Republic</option>
  </select>
</div>

<div class="wales" id="wales">
  <h3>Pick region in Wales</h3>
  <select>
    <option value="North">North</option>
    <option value="South">South</option>
  </select>
</div>

jQuery 代码

$(document).ready(function(){
  $('.england, .scotland, .ireland, .wales').hide();

  $('.country_option').change(function() {
  $('.not-selected').hide();
  $('#' + $(this).val()).show();
  });
});

或者,这里是CodePen link。我期待任何人为我目前的难题指出明显或不太明显的解决方案。

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

您实际上并没有在更改函数中包含任何隐藏 div 的代码。我猜$('.not-selected').hide(); 的意图是这样做,但您永远不会将 .not-selected 类应用于任何国家/地区 div。

也许一个简单的方法是在每次进行更改时调用所有国家/地区 div 的 hide() 函数。

$(document).ready(function(){        
  $('.country_option').change(function() {
    $('.england, .scotland, .ireland, .wales').hide();
    $('#' + $(this).val()).show();
  });
});

【讨论】:

  • 我真的很喜欢你回答我的问题的方式,你指出了我哪里出错并提供了解决方案,而不是用代码轰炸而不是真正解释任何事情。
【解决方案2】:

您的代码应如下所示

$(document).ready(function(){
  
$('.england, .scotland, .ireland, .wales').hide();
  $('.country_option').change(function() {
    $('.england, .scotland, .ireland, .wales').hide();
  $('.not-selected').hide();
  $('#' + $(this).val()).show();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="country">
  <h1>Pick country</h1>
  <select class="country_option">
    <option value="england">England</option>
    <option value="scotland">Scotland</option>
    <option value="ireland">Ireland</option>
    <option value="wales">Wales</option>
  </select>
</div>

<div class="not-selected">
  <p>Please select a country to be able to pick the region.</p>
</div>

<div class="england" id="england">
  <h3>Pick region in England</h3>
  <select>
    <option value="North">North</option>
    <option value="South">South</option>
    <option value="East">East</option>
    <option value="West">West</option>
    <option value="Midlands">Midlands</option>
  </select>
</div>

<div class="scotland" id="scotland">
  <h3>Pick region in Scotland</h3>
  <select>
    <option value="North">North</option>
    <option value="South">South</option>
  </select>
</div>

<div class="ireland" id="ireland">
  <h3>Pick region in Ireland</h3>
  <select>
    <option value="Northern">Northern</option>
    <option value="Republic">Republic</option>
  </select>
</div>

<div class="wales" id="wales">
  <h3>Pick region in Wales</h3>
  <select>
    <option value="North">North</option>
    <option value="South">South</option>
  </select>
</div>

【讨论】:

    猜你喜欢
    • 2014-11-18
    • 2010-11-27
    • 2013-04-07
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多