大致流程
1. 先绑定各级 select 元素的 change 事件
2. 加载当前菜单数据后触发当前菜单的 change 事件
3. 触发当前菜单的 change事件时执行加载下级菜单的数据
加载当前数据->触发change事件-> 加载下级数据
如此实现一层层传递加载
代码如下:
<SELECT NAME="aaa1" id="aaa1">
<option value="11" >11</option>
<option value="12" >12</option>
</SELECT>
<SELECT NAME="aaa2" id="aaa2">
<option value="" >无</option>
</SELECT>
<SELECT NAME="aaa3" id="aaa3">
<option value="" >无</option>
</SELECT>
<SELECT NAME="aaa4" id="aaa4">
<option value="" >无</option>
</SELECT>
</BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
$(function(){
/*
2011-3-31 11:28 http://blog.csdn.net/gggxin
大致流程
1. 先绑定各级 select 元素的 change 事件
2. 加载当前菜单数据后触发当前菜单的 change 事件
3. 触发当前菜单的 change事件时执行加载下级菜单的数据
加载当前数据->触发change事件-> 加载下级数据
如此实现一层层传递加载
*/
var $aaa1 = $('#aaa1');
var $aaa2 = $('#aaa2');
var $aaa3 = $('#aaa3');
var $aaa4 = $('#aaa4');
//.. 先绑定 change 事件
//选择第一层
$aaa1.change(function()
{
alert('aaa1.change');
$aaa2.empty();
$aaa3.empty();
$aaa4.empty();
//加载第二层,传当前选中的内容
load_aaa2($(this).val());
alert('aaa1.change over');
//triggerHandler 为触发当前控件的某个事件,这里的作用是让页面一加载就执行
});
//选择第二层
$aaa2.change(function(){
alert('aaa2.change');
//加载第三层
load_aaa3($(this).val());
});
//选择第三层
$aaa3.change(function(){
//加载第四层
load_aaa4($(this).val());
});
//..加载数据部份
//加载第二层 parentId 为父层的编号 ,可以根据这个编号动态子层信息
function load_aaa2(parentId)
{
alert('load_aaa2' + parentId);
// $aaa2.empty().append('<option value="">服务列表加载中...</option>');
$aaa2.append(
'<option value="21">21</option>'
);
$aaa2.append(
'<option value="22">22</option>'
);
//为触发当前控件的某个事件
$aaa2.triggerHandler('change');
}
//加载第三层
function load_aaa3(id)
{
$aaa3.empty();
$aaa3.append(
'<option value="31">31</option>'
);
$aaa3.append(
'<option value="32">32</option>'
);
//为触发当前控件的某个事件
$aaa3.triggerHandler('change');
}
//加载第四层
function load_aaa4(id)
{
$aaa4.empty();
$aaa4.append(
'<option value="41">41</option>'
);
$aaa4.append(
'<option value="42">42</option>'
);
}
//执行第一级的 change事件,实现一加载就选择功能
$aaa1.triggerHandler('change');
});
//-->
</SCRIPT>
</HTML>