简体   繁体   English

想要基于下拉框选择显示/隐藏多个div

[英]Want to show/hide multiple divs based on dropdown box selection

I've tried looking around and there are similar problems, but mine is way more simple, but yet, I can't find a solution within these forums. 我尝试环顾四周,并遇到类似的问题,但我的方法要简单得多,但是,在这些论坛中我找不到解决方案。 This is the dropdown markup. 这是下拉标记。

<select id ="category_faq">
     <option value="1">item1</option>
     <option value="2">item2</option>
     <option value="3">item3</option>
</select>

The divs are as: div如下:

<div class="views-row-1"></div>
<div class="views-row-2"></div>
<div class="views-row-3"></div>

Now, while choosing item 1, only div views-row-1 should be displayed and hiding all other divs. 现在,在选择项目1时,仅应显示div views-row-1并隐藏所有其他div。 when choosing item 2, only div views-row-2 should be displayed and hiding others. 选择项目2时,仅应显示div views-row-2并隐藏其他views-row-2 and so on.... 等等....

the jquery i have used is as: 我使用的jQuery是:

jQuery(document).ready(function($) {
      $('#category_faq').on('change',function() {
         if(this.value=='1')
            {
                $('.views-row-1').show();
            }
        else if (this.value=='2') 
             {
                $(".views-row-1").hide();
                $(".views-row-2").show();
                $(".views-row-3").hide();
            }
        else
             {
                $(".views-row-1").hide();
                $(".views-row-2").hide();
                $(".views-row-3").show();
             }

    }); 

}); 

This doesn't seem to work. 这似乎不起作用。 Where could i be wrong? 我哪里错了?

You could reduce it to this: 您可以将其简化为:

$('#category_faq').on('change', function () {
    $('div').hide();
    $('div.views-row-' + $(this).val()).show()
});

jsFiddle example jsFiddle示例

I would give all of the divs you want to show/hide a common selector such as: 我会为所有要显示/隐藏的div提供一个通用选择器,例如:

<div class="views-row views-row-1"></div> 
<div class="views-row views-row-2"></div>
<div class="views-row views-row-3"></div>

And then make each of the views-row be hidden unless it matches your clicked va: 然后将每个视图行都隐藏起来,除非它与您单击的va匹配:

$('#category_faq').on('change',function() {
   var val = $(this).val();
   $(".views-row").not('.views-row-'+val).hide() // Hide them all
   $(".views-row-"+val).show(); // Show if not already showing
}); 

http://jsfiddle.net/2gzm2q15/ http://jsfiddle.net/2gzm2q15/

$('div').hide();
$('.views-row-' + $('#category_faq').val()).show();
$('#category_faq').on('change', function () {
    $('div').hide();         
    $('.views-row-' + $(this).val()).show();
});

First you need to initialize it so the correct div is shown for the select menu's default value. 首先,您需要对其进行初始化,以便为选择菜单的默认值显示正确的div。 When you change the menu just hide them all and only show the one you want. 更改菜单时,只需将它们全部隐藏即可,仅显示所需的菜单。

Try this: 尝试这个:

  $('#category_faq').on('change',function() {
      $('div[class!=views-row-]').hide();
      $('div.views-row-' + this.value).show();
  }); 

Working Fiddle 工作小提琴

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM