То, что вы хотите сделать, это использовать функцию обратного вызова для функции .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