JQuery заменить: до и после. Загрузить функцию

0

я просто хочу заменить текст на onclick, загрузить и заменить с окончательным текстом:

$("#rebuild").click(function(){
    $("#rebuild").replaceWith("in progress...").load("/rebuild").replaceWith("end !");
});

Сценарий /rebuild правильно загружен, но окончательная замена не отображается... почему?

Теги:

2 ответа

2
Лучший ответ

load - это асинхронный метод ajax. Это означает, что ваш final replaceWith происходит до того, как данные с сервера будут помещены в элемент. Цепь replaceWith на том же элементе в лучшем случае встряхивает, так как после его замены он больше не существует и, следовательно, нет ничего для следующей replace

Если вы хотите, чтобы он был заменен после того, как вам нужно использовать полный обратный вызов 'load

$("#rebuild").click(function () {
    $(this).html("in progress...").load("/rebuild", function () {
        setTimeout(function(){
          $(this).html( "end !");  
        }, 2000)
    })
});

Я использовал setTimeout для окончательного изменения, поэтому он не мгновен, или вся загрузка не имеет смысла. Также используется html() а не replaceWith так что элемент все еще существует, и только его содержимое изменяется

1

http://api.jquery.com/load/

Load принимает аргумент функции после ее завершения.

$("#rebuild").click(function(){
    $("#rebuild").replaceWith("in progress...").load("/rebuild", function(){
        $(this).replaceWith("end !");
    });
});

EDIT: Дурн, кто-то избил меня: P

Ещё вопросы

Сообщество Overcoder
Наверх
Меню