2010-09-30 3 views
1
var request = new Request({ 
    method: 'get', 
    url: 'onlinestatusoutput.html.php', 
    onComplete:function(response) 
    { 
    $('ajax-content').get('tween', {property: 'opacity', duration: 'long'}).start(0).set('html', response).set('html', response).tween('height', [0, 650]); 
    } 
    }).send(); 

Прежде чем загружать желаемый контент в div, у меня есть текст с надписью «Загрузка содержимого ...».Fade в загруженном AJAX содержимом?

Что бы я хотел сделать, это вымыть текст, в котором говорится «Загрузка содержимого ...», а затем исчезнуть в содержимом, загруженном из запроса AJAX.

Как именно я мог бы это выполнить?

Я попытался использовать методы fade ('in') и fade ('out'), но это не сработало. Я также попробовал другой вызов метода get() и установил непрозрачность до 1 через start (1), но это тоже не сработало.

ответ

5

Вам не нужно получать экземпляр Fx.tween и применять start, используйте прототип элемента .fade, который делает это за вас.

Единственное, что вам нужно сделать, это установить OnComplete (как это не может быть асинхронной), чтобы заменить содержимое, удалить OnComplete, а затем исчезать обратно в

проверить это jsfiddle для демо:. http://www.jsfiddle.net/dimitar/NF2jz/291/

new Request.HTML({ 
    url: '/echo/html/', 
    data: { 
     html: "loaded content is now in", 
     delay: 3 
    }, 
    method: 'post', 
    onRequest: function() { 
     document.id("target").set("html", "Loading content..."); 
    }, 
    onComplete: function() { 
     var response = this.response.text; 
     document.id("target").set("tween", { 
      onComplete: function() { 
       this.element.set("html", response); 
       this.removeEvents("complete"); 
       this.element.fade(1); 
      }, 
      duration: 1000 
     }).fade(0); 
    } 
}).send(); 

это для целей тестирования на jsfiddle (отправлять данные вместе с запросом, чтобы имитировать ответ и указать количество секунд, чтобы задержать ответ от сервера)

другого способа т о обрабатывать его цепочки на экземпляре Fx:

 onComplete: function() { 
      this.element.set("html", response); 
      this.removeEvents("complete"); 
     }, 
     link: "chain" 
    }).fade(0).fade(1); 

весело провести время

+0

+1 для сложного примера и jsfiddle – Michael

+0

Просто пару вопросов: Могу ли я понимая это правильно - Все, что установлен внутри запроса на ' функция onComplete будет выполнять async? Итак, по сути, я мог бы включить onComplete в анонимную функцию, которая могла бы, например, обновить 5 div асинхронно? – Brownbay

+0

да правильный. это разветвленный процесс с неполным событием. вы обычно не можете «element.fade (1) .fade (0)», поскольку они будут отменять друг друга, поэтому вам нужно дождаться, когда onComplete будет что-то цепляться. это то, с чем связана ссылка: «цепочка», или вы можете позвонить из onComplete. кстати, «полное» событие запускается на любом экземпляре Fx - morph, tween и т. д. –

Смежные вопросы