javascript - jQuery:在选择更改时隐藏/显示多个 div

标签 javascript jquery html css select

在我的表单中,我需要显示/隐藏多个 div,具体取决于选择了 SELECT 中的哪个 OPTION。

我可以开始运行,但我的问题是,一个 div 可以被许多选项隐藏/显示。因此,在我的代码中,这些 div 会显示/隐藏一段时间,然后再次隐藏/显示。

这是我的 HTML:

<select id="vFormat" name="vFormat" onchange="getval(this);">
    <option value="0">Choose</option>
    <option value="1" class="format1">Option 1</option>
    <option value="2" class="format2">Option 2</option>
    <option value="3" class="format3">Option 2</option>
    <option value="4" class="format4">Option 2</option>
    <option value="5" class="format5">Option 2</option>
</select>

<div class="showdivformat1 showdivformat2 hiddenelement">
   Text of hidden Div
</div>

<div class="hidedivformat2 showdivformat5 visibleelement">
   Text of visible Div
</div>

这是我的 jQuery

function getval(sel) {

    var divval = $('.selectInput option:selected').attr('class').split(' ');

    for(var i=0; i<divval.length; i++){
        $(".hiddenelement").hide("50");
        $(".showdiv" + divval[i]).show("50");
    }

    for(var i=0; i<divval.length; i++){
        $(".visibleelement").show("50");
        $(".hidediv" + divval[i]).hide("50");
    }       
}

我知道问题是,我总是在更改选项时隐藏 .hiddenelement 并显示 .visibleelement。

但我没有解决方案来检查 div 是否已经隐藏或可见,并且在选项更改后应该保持这样。

最佳答案

这里有一个非常简洁的方法来处理您正在做的事情:

HTML:

<select id="vFormat" name="vFormat">
    <option value="0">Choose</option>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
    <option value="4">Option 4</option>
    <option value="5">Option 5</option>
</select>

<div class="select-default-hidden select-3-shown select-4-shown">
   Shown with options 3 and 4
</div>

<div class="select-default-shown select-4-hidden">
   Shown always, except with option 4
</div>

JavaScript:

$('#vFormat').change(function() {
    $('.select-default-hidden').hide();
    $('.select-default-shown').show();

    $('.select-' + $(this).val() + '-shown').show();
    $('.select-' + $(this).val() + '-hidden').hide();
}).change();

在 JSFiddle 上:https://jsfiddle.net/kd0Lxrgc/1/

使用 select-default-hiddenselect-default-shown 添加更多元素,以确定它们是应该默认隐藏还是默认显示,然后添加 select-X-shownselect-X-hidden 显示或隐藏带有给定选项的每个元素。

关于javascript - jQuery:在选择更改时隐藏/显示多个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36941360/

相关文章:

javascript - 变形按钮 - 更快的过渡

html - 页脚不会停留在 IE 兼容模式(无法在任何地方找到答案)

javascript - 使 holder.js 与其他 bootstrap 缩略图大小相同?

jquery - facebook 风格的导航栏

javascript - 如何在用户点击离开时关闭 Bootstrap 弹出窗口(或任何一般项目)?

javascript - 如何在没有提交按钮的情况下从文本字段调用 javascript 函数?

javascript - document.GetElementById 不适用于任何类型的浏览器

IE 中的 jQuery 1.4 更改事件错误

javascript - 在悬停时设置 'active' 类并保持事件类

javascript - Div 不在另一个 div 中居中