#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();
Чего я пытаюсь достичь с помощью приведенного выше кода, так это:
- добавьте оболочку
<div>
для нового содержимого вdiv id="uis">
- мы устанавливаем
id
для только что добавленного div, теперь используем этот идентификатор в качестве селектора и загружаем фактический html с.load()
- добавьте функцию к нашему
app
объекту. эта функция сделает новый div видимым - выполните функцию, добавленную на шаге 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'});