JQuery Load HTML работает только с установленным временем задержки - PullRequest
0 голосов
/ 02 октября 2010

Я пытаюсь загрузить HTML через JQuery, используя функцию .load.Это работает, как и ожидалось, но я хочу обработать загруженный HTML впоследствии.Это работает только тогда, когда я либо

а) устанавливаю точку останова ДО того, как произойдет манипуляция.

б) устанавливаю предупреждение ДО того, как произойдет манипуляция.Мне бы хотелось, чтобы это работало без установки точек останова или предупреждений.

Ниже приведен код, который не работает.Примечательно, что последний бит .html («контракт») работает только при установке точек останова / предупреждений.Вполне возможно, что я сделал что-то очень неправильное, так как я не очень опытен в JQuery.

function openImageDiv(element) {
    $(element).children('fieldset').removeClass('hidden');
    $(element).children('img').addClass('editable').bind('click', function () {
        chooseImage(this);
    }).removeClass("small");

    $(element).children('.expand').unbind('click').bind('click', function () {
        closeImageDiv($(this).parent());
    }).html("Contract");
}

Ниже приведен код, который загружает HTML с сервера.

function addImage(container) {
    var x = $(container).append('<div class="new">');
    var y = $(container).children('.new');
    var z = $(y).load('/antiquestore/image/editimageincontext');
    openImageDiv($(z)); // Setting breakpoint or alert before this line makes the change take place.
    $(z).removeClass('new');
    $(z).addClass('image');
}

Есть идеи, что я делаю не так?

1 Ответ

2 голосов
/ 02 октября 2010

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

Предложить следующее:

var z = $(y).load('/antiquestore/image/editimageincontext', function() {
    openImageDiv($(z)); 
    $(z).removeClass('new');
    $(z).addClass('image');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...