如何在继续之前等待jQuery函数完成?

Par*_*ker 0 html forms ajax jquery

所以现在我有了代码

$('[name=dept]').live('change',function() {
$('#course').load('getCla.php?dept='+$(this).val());
$('select.speedC').selectmenu({style:'dropdown',maxHeight: 250}); 
});
Run Code Online (Sandbox Code Playgroud)

基本上,它的作用是在选择值后传播表单选择菜单.问题是,第三行没有预期的动作,它试图在第二行完成填充列表之前执行.

有没有办法让第3行等到列表完成传播?(填写列表会重新格式化列表).

Nic*_*ver 5

使用callback参数.load(),如下所示:

$('#course').load('getCla.php?dept='+$(this).val(), function() { 
  $('select.speedC').selectmenu({style:'dropdown',maxHeight: 250}); 
});
Run Code Online (Sandbox Code Playgroud)

当响应返回并且#course元素具有新内容时,回调将运行.如果您因任何原因需要它,它还会从服务器接收返回的html作为第一个参数.

此外,由于您的初始选择器是如此昂贵,我强烈建议.delegate()在这里,像这样:

$('body').delegate('[name=dept]', 'change', function() {
  $('#course').load('getCla.php?dept='+$(this).val(), function() { 
    $('select.speedC').selectmenu({style:'dropdown',maxHeight: 250}); 
  });
});
Run Code Online (Sandbox Code Playgroud)