所以现在我有代码
$('[name=dept]').live('change',function() {
$('#course').load('getCla.php?dept='+$(this).val());
$('select.speedC').selectmenu({style:'dropdown',maxHeight: 250});
});
基本上,它的作用是在选择值后传播表单选择菜单。问题是,第三行没有预期的动作,它试图在第二行完成填充列表之前执行。
有没有办法让第3行等到列表完成传播? (填写列表会重新格式化列表)。
答案 0 :(得分:5)
使用.load()
的回调参数,如下所示:
$('#course').load('getCla.php?dept='+$(this).val(), function() {
$('select.speedC').selectmenu({style:'dropdown',maxHeight: 250});
});
当响应返回并且#course
元素具有新内容时,回调会运行。如果您因任何原因需要它,它还会从服务器接收返回的html作为第一个参数。
此外,由于您的初始选择器非常昂贵,我强烈推荐.delegate()
,如下所示:
$('body').delegate('[name=dept]', 'change', function() {
$('#course').load('getCla.php?dept='+$(this).val(), function() {
$('select.speedC').selectmenu({style:'dropdown',maxHeight: 250});
});
});
答案 1 :(得分:2)
喜欢这个:
$('[name=dept]').live('change',function() {
$('#course').load('getCla.php?dept='+$(this).val(), function (responseText, textStatus, xhr) {
$('select.speedC').selectmenu({style:'dropdown',maxHeight: 250});
});
});