jQuery .load() не запущен

#jquery

#jquery

Вопрос:

В ответ на событие выполняется это:

 $.getScript('nav.php?node='   node);
  

nav.php возвращает следующее с правильными заголовками ( 'Content-type: application/javascript' )

 $('#uis').append('<div id="app-personal-games-ui"></div>',function() {
    $('#app-personal-games-ui').load('loadhtml.php', {from: 'app.personal.games.ui'})
);
app.personal.games = function() {
    activate('app-personal-games-ui');
};
app.personal.games();
  

Чего я пытаюсь достичь с помощью приведенного выше кода, так это:

  1. добавьте оболочку <div> для нового содержимого в div id="uis">
  2. мы устанавливаем id для только что добавленного div, теперь используем этот идентификатор в качестве селектора и загружаем фактический html с .load()
  3. добавьте функцию к нашему app объекту. эта функция сделает новый div видимым
  4. выполните функцию, добавленную на шаге 3

Результаты показывают, что все шаги завершены успешно, за исключением #2. т.е. <div id="app-personal-games-ui"></div> добавлен в нужное место, а app.personal.games.toString(); в firebug показывает, что функция добавлена к объекту и имеет правильный код. Но load строка не выполняется, и новый div остается пустым.

Почему это происходит, и как я могу заставить это работать?

Ответ №1:

Согласно документации, .append() функция не принимает обратный вызов. Итак, вы можете попробовать следующее:

 var query = { from: 'app.personal.games.ui' };
$('<div id="app-personal-games-ui"></div>').load('loadhtml.php', query, function() {
    $('#uid').append(this);
});
  

Комментарии:

1. Да, это тоже сделало бы это (не передавая функцию обратного вызова append).

Ответ №2:

Я нашел, что не так. Что действительно неправильно, так это то, что мне нужно немного поспать, и я все еще не хочу ложиться спать ;). Но что не так с этим скриптом, так это то, что .append() не принимает функцию обратного вызова, и я должен изменить приведенное выше на:

 $('#uis').append('<div id="app-personal-games-ui"></div>');
$('#app-personal-games-ui').load('loadhtml.php', {from: 'app.personal.games.ui'});