alert() 这个方法伤不起啊!

IToneY 2011-05-31 12:48:26
问题:小弟实现的功能是一个国家、省、市的级联功能。 但我查询的时候为了使我的查询条件,再点击查询按钮筛选数据后将用户上次选中的选择项再次绑定在下拉列表中。但是,这样问题就来了。我绑定上次选中省的信息没问题,但是我绑定市的时候就有问题了!当然了这两个绑定用的是同一个方法!我很郁闷。。。。。。当我在我的绑定选中项的地方加上一个alert()方法后又可以了(红色标记的地方)。很是不解!求高手讲解一下如故!如果我不想调用alert()方法也让它执行绑定该如何做??
可能听着有点不太明白,没办法小弟表达能力有限。求高手细心读懂我的意思,给解释!小弟在这先谢过了。

重要代码块!
//获取上次选中值
//parameter1 要绑定的当前下拉列表ID
//parameter2 用于存放该级别列表中上次选中的值的hidCout的Id;
//paramter3 父级列表上次选中的值
//paramter4 列表级别
function getXzz(DqSelId,Selhid,FjSelval,SelJb){
var SelProId=$(DqSelId);//当前下拉列表
var SeleSId=$(Selhid).val();//当前列表中上次选中的值
var SeleCId=$("#hidCout").val();//国家ID
var Fjval=$(FjSelval).val();
// alert("bb"+SeleSId);
if(SeleSId!=""&&SeleSId!=null&&Fjval!=""&&Fjval!="-1"){
$.ajax({
url: "AjaxCascade.aspx?Couty="+SeleCId+"&Classes="+SelJb+"&ID="+Fjval,
cache: false,
async: false,
success: function(response) {
if(response!=""){
var valkey=response.toString().split("|");
$("<option value='-1'>--请选择--</option>").appendTo(SelProId);
for(var i=0;i<valkey.length;i++){
var valnew=valkey[i].split(":");
$("<option id='"+valnew[0]+"' value='"+valnew[0]+"'>"+valnew[1]+"</option>").appendTo(SelProId);
}

}
}
});
}
alert("重新绑定成功!"); 问题所在为什么加alert和不加会有区别
$("#"+SeleSId).attr("selected","selected");
}
...全文
133 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xs8577 2011-05-31
  • 打赏
  • 举报
回复
测试环境IE6 ?

//IE6下,select比较特殊,赋值之后要延迟修改select的属性
setTimeout(function(){ $("#"+SeleSId).attr("selected","selected"); },200);
cb1156 2011-05-31
  • 打赏
  • 举报
回复
应该是同异步问题,
AJAX的操作是异步的,所以在数据绑上去之前,就执行了后面的语句,而alert会暂时中断执行,所以在中断的时候异步处理已经结束,就能绑上去了
解决办法是
$("#"+SeleSId).attr("selected","selected");
写成

setTimeout('$("#"+SeleSId).attr("selected","selected")',1);
IToneY 2011-05-31
  • 打赏
  • 举报
回复
自己先顶顶!
IToneY 2011-05-31
  • 打赏
  • 举报
回复
谢谢zl_system的回答 我开始就有这么想过 !但是IE6下还是不行。。。很无语的 呵。。。
IToneY 2011-05-31
  • 打赏
  • 举报
回复
cb1156 vaery滴3个牛没有玛吃!! 问题确实是这样的.....同异步问题。
行间 2011-05-31
  • 打赏
  • 举报
回复
$("#"+SeleSId).attr("selected","selected"); 应该放在 success 里面
IToneY 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cb1156 的回复:]
应该是同异步问题,
AJAX的操作是异步的,所以在数据绑上去之前,就执行了后面的语句,而alert会暂时中断执行,所以在中断的时候异步处理已经结束,就能绑上去了
解决办法是
$("#"+SeleSId).attr("selected","selected");
写成

setTimeout('$("#"+SeleSId).attr("selected","selected")',……
[/Quote]

是的我现在出现的问题是IE6下的!

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧