显示与类同名的id元素

时间:2015-06-25 19:58:03

标签: javascript jquery list function select

<style>
    #africa,#bahrain,#oman{
        display:none
    }
</style>

<select class="country">
    <option class="africa" value="africa">Africa</option>
    <option class="bahrain" value="bahrain">Bahrain</option>
    <option class="oman" value="oman">Oman</option>
</select>

<div class="countryDetails">
    <div id="africa"><h1>Africa details</h1></div>
    <div id="bahrain"><h1>Bahrain details</h1></div>
    <div id="oman"><h1>Oman details</h1></div>
</div>

我如何创建一个功能,如果我从下拉列表中选择一个国家/地区,该国家/地区的详细信息会显示?

列表项的class与详细信息具有相同的名称,期望详细信息为ID。

该列表将继续增长,因此需要保持动态。

2 个答案:

答案 0 :(得分:2)

这是一个解决方案

var t=$('.country').val();

$('#'+t).show();

$('.country').on('change',function(){
    t=$('.country').val();
    $('.countryDetails').children().hide();
    $('#'+t).show();
});
#africa,#bahrain,#oman{
        display:none
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select class="country">
    <option class="africa" value="africa">Africa</option>
    <option class="bahrain" value="bahrain">Bahrain</option>
    <option class="oman" value="oman">Oman</option>
</select>

<div class="countryDetails">
    <div id="africa"><h1>Africa details</h1></div>
    <div id="bahrain"><h1>Bahrain details</h1></div>
    <div id="oman"><h1>Oman details</h1></div>
</div>

答案 1 :(得分:0)

这样做

$('select').on('change',function(){
    $('.countryDetails').children().hide();
    $('#' + this.value).fadeIn('slow');
});

DEMO

如果你还没有将jQuery包含在你的项目中,那么最好使用纯javascript,因为你不需要加载整个jQuery lib。

您可以改用:

var det = document.querySelectorAll('.countryDetails div');
var val = document.getElementById('country');

val.addEventListener('change',function(){
    for (var i = 0; i< det.length;i++){
        det[i].id != val.value ? det[i].style.display = 'none' :  det[i].style.display = 'block';
    }
});

请注意我在您所在国家/地区的html中添加的ID

<select class="country" id="country">
    <option class="africa" value="africa">Africa</option>
    <option class="bahrain" value="bahrain">Bahrain</option>
    <option class="oman" value="oman">Oman</option>
</select>

<div class="countryDetails">
    <div id="africa"><h1>Africa details</h1></div>
    <div id="bahrain"><h1>Bahrain details</h1></div>
    <div id="oman"><h1>Oman details</h1></div>
</div>

DEMO PURE JS