一、效果图

二、数据结构

三、HTML代码
<form id="form">
<div id="select-class" name="typeClass">
<select name="main_business_type_0" id="class-0">
<option>请选择门类</option>
</select>
/
<select name="main_business_type_1" id="class-1">
<option>请选择大类</option>
</select>
/
<select name="main_business_type_2" id="class-2">
<option>请选择中类</option>
</select>
/
<select name="main_business_type_3" id="class-3">
<option>请选择小类</option>
</select>
</div>
</form>
四、js代码
$("#select-class").each(function(){
var temp_html ;
var oClass_0 = $(this).find("#class-0")
var oClass_1 = $(this).find("#class-1")
var oClass_2 = $(this).find("#class-2")
var oClass_3 = $(this).find("#class-3")
var class_0_key_array = [] ;
var class_1_key_array = [] ;
var class_2_key_array = [] ;
var class_0_selected_index = 0 ;
var class_1_selected_index = 0 ;
var class_2_selected_index = 0
var class_0_init = function(){
class_0_key_array = [] ;
$.each(classJson , function(key,value){
class_0_key_array.push(key) ;
temp_html += "<option value='"+value.trade_name+"'>"+value.trade_name+"</option>";
});
oClass_0.html(temp_html);
temp_html = "";
class_1_init(class_0_key_array) ;
};
var class_1_init = function(class_0_key_array){
class_1_key_array = [] ;
if (class_0_key_array.length != 0) {
class_0_selected_index = oClass_0.get(0).selectedIndex;
$.each(classJson[class_0_key_array[class_0_selected_index]].children , function(key,value){
class_1_key_array.push(key) ;
temp_html += "<option value='"+value.trade_name+"'>"+value.trade_name+"</option>";
});
}
oClass_1.html(temp_html) ;
temp_html = "";
class_2_init(class_1_key_array) ;
};
var class_2_init = function (class_1_key_array){
class_2_key_array = [] ;
if (class_1_key_array.length != 0) {
class_1_selected_index = oClass_1.get(0).selectedIndex ;
$.each(classJson[class_0_key_array[class_0_selected_index]].children[class_1_key_array[class_1_selected_index]].children , function(key,value){
class_2_key_array.push(key) ;
temp_html += "<option value='"+value.trade_name+"'>"+value.trade_name+"</option>";
});
}
oClass_2.html(temp_html);
temp_html = "";
class_3_init(class_2_key_array) ;
};
var class_3_init = function(class_2_key_array){
class_3_key_array = [] ;
if (class_2_key_array.length != 0) {
class_2_selected_index = oClass_2.get(0).selectedIndex ;
$.each(classJson[class_0_key_array[class_0_selected_index]].children[class_1_key_array[class_1_selected_index]].children[class_2_key_array[class_2_selected_index]].children , function(key , value){
class_3_key_array.push(key) ;
temp_html += "<option value='"+value.trade_name+"'>"+value.trade_name+"</option>";
});
}
oClass_3.html(temp_html);
temp_html = "" ;
}
oClass_0.change(function(){
class_1_init(class_0_key_array);
});
oClass_1.change(function(){
class_2_init(class_1_key_array);
});
oClass_2.change(function(){
class_3_init(class_2_key_array);
})
class_0_init();
});