function genTask(elem){ elem.each(function(){ $this=$(this).parent('.cntTasks'); var pattern=/taskId-(.*)$/ var idTask=$this.attr('id').match(pattern); var data='id_task='+idTask[1]; if(typeof jsVar2 !='undefined') data+=jsVar2; $.ajax({ type: "POST", url: domain+"/view_tasks/gen_tasks/", dataType: 'html', data: data, success: function(dt){ $this.find('.contChildTasks').html(dt); childs=$this.children('.taskDesc').find('.has_child'); if(childs.length!=0) genTask(childs); } } }); $this.find('.taskDesc').show(); }); } if(typeof jsVar2 !='undefined') genTask($('.cntTasks .has_child')); });
怎么可能 $.each等到动作$.ajax完成后再继续循环,我不能得到$ this var,因为它具有最后一个值,对不起我的英语,谢谢!!!
$.each
$.ajax
选项1:切换到success处理程序中数组中的下一个元素。
success
选项2:同步发出Ajax请求:
全球:
$.ajaxSetup({ async: false });
或直接在请求中:
$.ajax({ async: false, type: "POST", url: domain+"/view_tasks/gen_tasks/", dataType: 'html', data: data, success: function(dt){ $this.find('.contChildTasks').html(dt); childs = $this.children('.taskDesc').find('.has_child'); if(childs.length != 0) { genTask(childs); } }
});