首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据输入值显示一个div并隐藏其他div

根据输入值显示一个div并隐藏其他div
EN

Stack Overflow用户
提问于 2019-03-28 23:26:33
回答 3查看 31关注 0票数 1

我如何重构$('#region-2, #region-3').hide();,使我不需要输入多个ID?可能有50+元素。

代码语言:javascript
复制
$('#submit1').on("click", function() {
  var input_val = $('#input1').val();
  if (input_val == 'region1') {
    $('#region-1').show().attr("style", "display: block!important");
    $('#region-2, #region-3').hide();
  } else if (input_val == 'region2') {
    $('#region-2').show().attr("style", "display: block!important");
    $('#region-1, #region-3').hide();
  }
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="form-control marg-bot-20" id="input1" placeholder="">
<input class="btn btn-primary" id="submit1" type="submit" value="">
<div class="region-container">
  <div id="region-1" class="hide">
    region 1
  </div>
  <div id="region-2" class="hide">
    region 2
  </div>
  <div id="region-3" class="hide">
    region 3
  </div>
</div>

EN

回答 3

Stack Overflow用户

发布于 2019-03-28 23:31:21

要实现这一点,可以将查找值放在每个子div的data属性中。然后,您可以对它们执行filter()操作以找到与#input1的值匹配的值,并在隐藏所有其他值的同时对其执行show()操作。试试这个:

代码语言:javascript
复制
$('#submit1').on("click", function() {
  var input_val = $('#input1').val();
  $('.region-container > div').hide().filter(function() {
    return $(this).data('lookup') === input_val;
  }).show();
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="form-control marg-bot-20" id="input1" placeholder="">
<input class="btn btn-primary" id="submit1" type="submit" value="">
<div class="region-container">
  <div id="region-1" class="hide" data-lookup="region1">
    region 1
  </div>
  <div id="region-2" class="hide" data-lookup="region2">
    region 2
  </div>
  <div id="region-3" class="hide" data-lookup="region3">
    region 3
  </div>
</div>

票数 0
EN

Stack Overflow用户

发布于 2019-03-28 23:33:21

如果您打算使用相同的文本作为id,并且只是使用不同的空格,那么您可以使用它。

因为您使用的是bootstrap,所以可以使用hide类,而不需要内联样式。

代码语言:javascript
复制
$('#submit1').on("click", function() {
  if( $('#input1').val() ){
    var input_val = $('#input1').val().replace(' ', '-');

    $('div[id^="region-"]').addClass('hide');
    $('#' + input_val).removeClass('hide');
  }
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" />

<input type="text" class="form-control marg-bot-20" id="input1" placeholder="">
<input class="btn btn-primary" id="submit1" type="submit" value="Search">
<br>
<div class="region-container">
  <div id="region-1" class="hide">
    region 1
  </div>
  <div id="region-2" class="hide">
    region 2
  </div>
  <div id="region-3" class="hide">
    region 3
  </div>
</div>

票数 0
EN

Stack Overflow用户

发布于 2019-03-29 00:19:49

我只是在你的代码中更新了一些jQuery的变化,我希望它能帮到你。谢谢

HTML您必须在输入中键入与在

中写入的ids相同的ids

代码语言:javascript
复制
$('#submit1').on("click", function() {
  var input_val = $('#input1').val();
  $('.hide').hide();
  $('#' + input_val).show();
});
代码语言:javascript
复制
.hide {
  display: none;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="form-control marg-bot-20" id="input1" placeholder="">
<input class="btn btn-primary" id="submit1" type="submit" value="Button">
<div class="region-container">
  <div id="region-1" class="hide">
    region 1
  </div>
  <div id="region-2" class="hide">
    region 2
  </div>
  <div id="region-3" class="hide">
    region 3
  </div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55401351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档