<script type="text/javascript">
function selChange(obj){
if (obj.value == "") {
for (var i = 0; i <= $(obj).get(0).options.length - 1; i++) {
var oArray = $(obj).get(0).options[i].value;
if ($(".snt" + oArray)) {
$(".snt" + oArray).remove();
}
}
return false;
}
var str='<select id="sel_1" onchange="selChange(this)">';
str+='<option value="">请选择</option>';
str+='<option value="3">行业新闻</option>';
str+='<option value="4">市场行情</option>';
str+='</select>';

$("#selAll").html(str);
}
</script>
<div style="float:left; margin:20px;">
<select id="sel_1" onchange="selChange(this)">
<option value="">请选择</option>
<option value="1">资讯</option>
<option value="2">动态</option>
</select>
<div id="selAll"></div>
</div>
实现的功能是主菜单显示子菜单功能,上面是需要和后台交互读取数据填充select的,我这里就简单的写了一下
例如:选择主菜单“资讯”则会自动添加一个列表框,这个列表框的项是资讯的子菜单“行业新闻,市场行情等”
当单机子菜单“市场行情”的时候又会出现一个只属于市场行情的子菜单例如“国内行情,国际行情”,可能有1级或2级或更多的子菜单。
当我选择“请选择”项的时候,相对应的子菜单就被移除。
这个怎么实现,我只能实现出现2个列表框,在出现第三个的时候就不知道怎么判断了,求高手指教!

解决方案 »

  1.   

    level_1 , level_2是模拟数据。<html>
    <head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script type="text/javascript">
    $(function(){
    var level_1 = [{
    txt : '行业新闻' ,
    value : 3
    },{
    txt : '市场行情' ,
    value : 4
    }] , level_2 = [{
    txt : '国内行情' ,
    value : 5
    },{
    txt : '国际行情' ,
    value : 6
    }];
    $('body').delegate('select' , 'change' , function(){
    var html = '<select><option value="0">请选择</option>';
    var _v = $(this).val();
    if(_v==1){
    for(var i = 0 ; i < level_1.length ; ++i){
    html += '<option value="' + level_1[i].value + '">' + level_1[i].txt + '</option>';
    }
    html += '</select>';
    $(this).after(html);
    }else if(_v == '3'){
    for(var i = 0 ; i < level_2.length ; ++i){
    html += '<option value="' + level_2[i].value + '">' + level_2[i].txt + '</option>';
    }
    html += '</select>';
    $(this).after(html);
    }else if(_v == 0){
    $(this).nextAll('select').remove();
    }
    }); });
    </script>
    </head>
    <body>
    <select>
            <option value="0">请选择</option>
            <option value="1">资讯</option>
            <option value="2">动态</option>
        </select>
    </body>
    </html>
      

  2.   


    谢谢指正,已经更改了。直接复制下面代码运行下,看OK不?<html>
        <head>
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script type="text/javascript">
            $(function(){
                var levels = {
                 '1':[{
                     txt : '行业新闻' ,
                    value : 3
                },{
                    txt : '市场行情' ,
                    value : 4
                }],
                 '3':[{
                    txt : '国内行情' ,
                    value : 5
                },{
                    txt : '国际行情' ,
                    value : 6
                }]
             };
                $('body').delegate('select' , 'change' , function(){
                    var _v = $(this).val();
                    if($('#select_' + _v).size()!=0){
                     return;
                    }
                    var html = '<select id="select_' + _v + '"><option value="-1">请选择</option>';
                    if(levels[_v]){
                        for(var i = 0 ; i < levels[_v].length ; ++i){
                            html += '<option value="' + levels[_v][i].value + '">' + levels[_v][i].txt + '</option>';
                        }
                        html += '</select>';
                        $(this).after(html);
                    }else {
                        $(this).nextAll('select').remove();
                    }
                }); 
            });
        </script>
        </head>
        <body>
            <select id="select_0">
                <option value="-1">请选择</option>
                <option value="1">资讯</option>
                <option value="2">动态</option>
            </select>
        </body>
    </html>