Как смоделировать функцию обратного вызова добавления? - PullRequest
3 голосов
/ 07 декабря 2011

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

$.onShadowboxFinished = function (f) {

var postid = $(f.link).parent().attr("id");
var loadUrl = "wp-admin/admin-ajax.php?action=mfields_show_post&p=" + postid;
$('#infos_wrap').load(loadUrl).append();
alert("loaded! test selector :"+$('a.projectimgs').first().attr("href"));

}

Я загружаю контент (ссылки и изображения) в div #infos_wrap. После того, как все ссылки и изображения загружены, я хочу манипулировать контентом (пример: выберите ссылки, чтобы добавить их в кэш теневого хранилища)

На данный момент 4-я строка выполняется перед 3-й.

Спасибо за вашу помощь!

PS: Если кто-то хочет действительно помочь (я был бы признателен ^^)
Вы можете проверить сайт: http://www.tom -portfolio.fr / wp-login.php
логин: посетитель
пропуск: посетитель
Файл javascript: portfolio.js
Используйте ваш firebug или инструменты GoogleDev для просмотра!
Большое спасибо!

1 Ответ

2 голосов
/ 07 декабря 2011

То, что вы хотите сделать, это использовать функцию обратного вызова для функции .load(), потому что она асинхронная (имеется в виду код после того, как он продолжает выполняться, пока не получит ответ и не сработает функция обратного вызова):

var postid  = $(f.link).parent()[0].id,
    loadUrl = "wp-admin/admin-ajax.php?action=mfields_show_post&p=" + postid;

$('#infos_wrap').load(loadUrl, function () {
    alert("loaded! test selector :"+$('a.projectimgs').first()[0].href);
});

Обратите внимание, что .load() заменит содержимое #infos_wrap ответом на вызов AJAX (в данном случае #infos_wrap), поэтому нам не нужно использовать .append() (внутри используется .html(), который используется заменяет HTML выбранного элемента (ов) вместо добавления ответа).

Также обратите внимание, что я изменил пару экземпляров .attr() там, где это было не нужно.

Документация для .load(): http://api.jquery.com/load

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...