为什么.attr('data-where',''),option会初始化呢
$.fn.UiCascading=function(){
var ui=$(this);
var selects=$('select',ui);
selects
.on('change',function(){
var val=$(this).val();
var index=selects.index(this);
//触发下一个的初始化
ui.find('select:gt('+(index+1)+')').each(function(){
$(this)
.attr('data-where','')
.triggerHandler('reloadOptions');
})
})
.on('reloadOptions',function(){
var method=$(this).attr('data-search');
var data=AjaxRemoteGetData[ method ]();
var select = $(this);
select.find('option').remove();
$.each( data , function(i,item){
var el = $('<option value="'+item+'">'+item+'</option>');
select.append(el);
});
});
selects.eq(0).triggerHandler('reloadOptions');
}15
收起
正在回答
1回答
同学你好,
这段代码还不全哦,可以继续往下面看,老师有讲解:

例如:
当点击医院地区的时候,会获取当前元素的data-where属性值,开始没有值就会被赋值为空数组,然后将以医院地区选择的值放进where数组中,例如是‘朝阳区’。
然后会给index+1,也就是第二个select添加上data-where属性,值为where数组,触发reloadOptions事件,更新option中的内容。
然后遍历大于index+1的select元素,清空data-where属性值,触发reloadOptions事件,更新option中的内容。
但点击第二个下拉框的时候,重复上面的操作,从而更新内容。
主要更新option中内容是触发reloadOptions事件,这个事件里面将通过data-where属性获取的值传入到了AjaxRemoteGetData对象中:

通过参数来进行判断:

自己可以再往后面看看哦。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星