显示基于先前下拉选择的第二个下拉列表

时间:2014-05-21 11:11:16

标签: javascript jquery html

我是html / javascript的新手,我正在开发并尝试弄清楚如何使用this link中的代码。

我可以看到下面链接中提供的解决方案,但不确定如何在html页面的上下文中应用: http://jsfiddle.net/3UWk2/3/

我已经在HTML页面中复制了HTML和JavaScript函数内容,但它基本上显示了所有行和选择框...任何想法这是如何工作的?我是否应该在一个单独的html页面中将html代码和JavaScript函数放在一个不同的文件中,然后以某种方式将2调用在一起?

<select size="1" id="Rank" title="" name="Rank">
    <option value="">-Select Your Rank-</option>
    <option value="airman">Airman</option>
    <option value="senior-airman">Senior Airman</option>
</select>

<div class="container">
    <div class="airman">
        <select class="second-level-select">
            <option value="">-Select Your Rank-</option>
            <option value="basic-ore-1">Basic Ore Miner - Level 1</option>
            <option value="basic-ore-2">Basic Ore Miner - Level 2</option>
        </select>
    </div>
    <div class="senior-airman">
        <select class="second-level-select">
            <option value="">-Select Your Rank-</option>
            <option value="omber-miner-1">Omber Miner - Level 1</option>
            <option value="omber-miner-2">Omber Miner - Level 2</option>
        </select>
    </div>
</div>

<div class="second-level-container">
    <div class="basic-ore-1">
        Line of text for basic ore miner 1
    </div>
    <div class="basic-ore-2">
        Line of text for basic ore miner 2
    </div>
    <div class="omber-miner-1">
        Line of text for omber miner 1
    </div>
    <div class="omber-miner-2">
        Line of text for omber miner 2
    </div>    
</div>

$(document).ready(function() {
    $('#Rank').bind('change', function() {
        var elements = $('div.container').children().hide(); // hide all the elements
        var value = $(this).val();

        if (value.length) { // if somethings' selected
            elements.filter('.' + value).show(); // show the ones we want
        }
    }).trigger('change');

    $('.second-level-select').bind('change', function() {
        var elements = $('div.second-level-container').children().hide(); // hide all the elements
        var value = $(this).val();

        if (value.length) { // if somethings' selected
            elements.filter('.' + value).show(); // show the ones we want
        }
    }).trigger('change');
});

1 个答案:

答案 0 :(得分:0)

您应该将脚本包含在内,页面将如下:

<html >
<head >
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#Rank').bind('change', function() {
    var elements = $('div.container').children().hide(); // hide all the elements
    var value = $(this).val();

    if (value.length) { // if somethings' selected
        elements.filter('.' + value).show(); // show the ones we want
    }
}).trigger('change');

$('.second-level-select').bind('change', function() {
    var elements = $('div.second-level-container').children().hide(); // hide all the elements
    var value = $(this).val();

    if (value.length) { // if somethings' selected
        elements.filter('.' + value).show(); // show the ones we want
    }
}).trigger('change');
});

</script>
</head>

<body>
    <select size="1" id="Rank" title="" name="Rank">
        <option value="">-Select Your Rank-</option>
        <option value="airman">Airman</option>
        <option value="senior-airman">Senior Airman</option>
    </select>

    <div class="container">
        <div class="airman">
            <select class="second-level-select">
                <option value="">-Select Your Rank-</option>
                <option value="basic-ore-1">Basic Ore Miner - Level 1</option>
                <option value="basic-ore-2">Basic Ore Miner - Level 2</option>
            </select>
        </div>
        <div class="senior-airman">
            <select class="second-level-select">
                <option value="">-Select Your Rank-</option>
                <option value="omber-miner-1">Omber Miner - Level 1</option>
                <option value="omber-miner-2">Omber Miner - Level 2</option>
            </select>
        </div>
    </div>

    <div class="second-level-container">
        <div class="basic-ore-1">
            Line of text for basic ore miner 1
        </div>
        <div class="basic-ore-2">
            Line of text for basic ore miner 2
        </div>
        <div class="omber-miner-1">
            Line of text for omber miner 1
        </div>
        <div class="omber-miner-2">
            Line of text for omber miner 2
        </div>    
    </div>
</body>
</html>