2010-11-04 5 views
0

Так что сейчас у меня есть кодКак дождаться завершения функции jQuery, прежде чем двигаться дальше?

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

В принципе, то, что она делает это размножить меню выбора формы после выбора значения. Проблема в том, что третья строка не имеет своего предполагаемого действия, она пытается выполнить до того, как вторая строка завершит заполнение списка.

Есть ли способ сделать третью строку до тех пор, пока список не закончит распространение? (Как заполнение списка переформатирует список).

ответ

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}); 
    }); 
}); 
+0

. Кажется, я не могу ответить на этот вопрос до того, как вы ... всегда, кажется, один шаг назад. Но я побил тебя до этого. Я был на самом деле удивлен, что вы не дали ответа на http://stackoverflow.com/questions/4084095/help-in-jquery-selectors –

+0

@ Джон - возможно, потому, что я спал:) вопреки любым слухам, я сплю около 4-6 часов в день :) –

+0

звучит о праве. Вот и весь сон, который я тоже получаю. –

2

использовать функции обратного вызова в jQuery load()

Like This:

$('[name=dept]').live('change',function() { 
    $('#course').load('getCla.php?dept='+$(this).val(), function (responseText, textStatus, xhr) { 
    $('select.speedC').selectmenu({style:'dropdown',maxHeight: 250}); 
    }); 
}); 
+0

Спасибо! Сначала ответил Ник, поэтому я должен забрать его, но ты все еще помог! – Parker

+0

@Parker ... Нет проблем ... Ник всегда отвечает первым .. lol :) –

Смежные вопросы