jquery实现级联遇到的ajax同步请求、动态DOM元素监听事件
2018-03-07 10:01
836 查看
记录一次实现级联菜单选项遇到的一系列问题
实现动态生成select下拉选项
json数据格式example:
获取JSON格式的文件,动态生成一级下拉选项框
一级菜单获取:
目前的效果如下:
2.选择一级菜单选项之后,动态加二级菜单选项
一级菜单是动态生成添加的,一般的事件绑定没有作用,使用.live()绑定事件
select获取选中项的值,val()获取到option中的value,text()获取到option的文本内容
实现效果:
json文件中事件消息中有换行加入了“\n”,动态选择消息内容会有换行的效果,
效果如下:
实现动态生成select下拉选项
json数据格式example:
[ { "eventType":"101一般交通事故", "eventTypeCont":["前方车辆抛锚\n注意减速避让","前方三车追尾\n注意减速避让","前方有车停靠\n减速小心驾驶","前方路有杂物"] }, { "eventType":"102严重交通事故", "eventTypeCont":["前方道路坍塌","车辆爆炸\n请绕行"] } ]
获取JSON格式的文件,动态生成一级下拉选项框
let eventHtml=""; eventHtml+="<label class='control-label col-md-2' for='eventType'>事件类型</label><div class='col-md-4'>"+ "<select class='form-control contentType' id='contentType'>"+ "<option value='-1'>请选择</option>";
一级菜单获取:
$.ajaxSetup({ async:false }); //设置同步ajax请求json文件,获取到的数据作为select的option选项值,需要等待完成获取并生成eventHtml, //若非同步,则导致渲染到页面的select没有选项值,且因为div标签不闭合导致其他页面混乱. $.getJSON("../eventType.json",function(data){ $.each(data,function(key,val){ eventHtml+="<option value='"+key+"'>"+val.eventType+"</option>"; }); //获取到的data,key为数据下标,val为原始数据 eventHtml+="</select></div><label class='control-label col-md-2'>事件内容</label><div class='col-md-4'>"+ "<select class='form-control contentInfo' id='contentInfo' >"+ "<option value='-1'>请选择</option></select></div>"; }) $.ajaxSetup({ async:true }); //ajax请求同步只针对于这一请求,结束之后设置为异步,避免全局污染
目前的效果如下:
2.选择一级菜单选项之后,动态加二级菜单选项
一级菜单是动态生成添加的,一般的事件绑定没有作用,使用.live()绑定事件
$("#contentType").live("change",function(){ $.ajaxSetup({ async:false }); //事件响应中有ajax请求,需要设置ajax同步请求 let eventT=$("#contentType option:selected").val(); //事件内容选项清空 $("#contentInfo").empty(); $.getJSON("../eventType.json",function(data){ let opt="<option value='-1'>请选择</option>"; $.each(data,function(key,val){ if(eventT==key){ if(val.eventTypeCont.length==0){ return false; }else{ for(let i=0;i<val.eventTypeCont.length;i++){ 4000 opt+="<option value='"+val.eventTypeCont[i]+"'>"+val.eventTypeCont[i]+"</option>"; } } } }); //获取到一级菜单选择下标值,匹配对应的原数据,eventTypeCont进行渲染 $("#contentInfo").append(opt); }) $.ajaxSetup({ async:true }); });
select获取选中项的值,val()获取到option中的value,text()获取到option的文本内容
实现效果:
json文件中事件消息中有换行加入了“\n”,动态选择消息内容会有换行的效果,
效果如下:
相关文章推荐
- 如何让动态创建的页面元素响应用户事件 (HTML/javascript/jQuery/Ajax/DOM)
- 工作积累(六)——jQuery实现DOM元素事件动态绑定
- 工作积累(六)——jQuery实现DOM元素事件动态绑定
- 使用jquery动态生成的标签,需要在代码当中绑定才可以实现事件的监听
- 关于jquery 的绑定事件on 如何绑定动态生成的dom元素
- JQuery动态创建DOM、表单元素的实现代码
- JQuery动态创建DOM、表单元素的实现代码
- jQuery2.x以上版本对动态新增的DOM元素绑定事件方法
- jQuery实现ajax跨域请求XML数据 并解析XML元素
- 【JavaScript】AJAX之异步同步请求、FormData类型、事件监听接口
- JQuery给动态生成的DOM元素绑定点击事件
- jquery给动态添加的dom元素绑定事件
- jQuery扩张实现DOM对象属性同步动态效果
- jQuery实现为动态添加的元素绑定事件实例分析
- JQuery动态创建DOM、表单元素的实现代码
- Ajax成功添加新DOM元素 jquery 绑定元素事件
- Jquery实现Ajax同步请求
- Ajax成功添加新DOM元素 jquery 绑定元素事件
- jQuery的deferred对象使用详解——实现ajax同步请求数据
- springmvc 动态修改返回值类型,实现方法既能被ajax调用,又能被同步请求调用