【问题标题】:Fade in AJAX loaded content?淡入 AJAX 加载的内容?
【发布时间】:2010-09-30 19:27:57
【问题描述】:
 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 之前,我的文本显示“正在加载内容...”。

我想做的是淡出“正在加载内容...”的文本,然后淡入从 AJAX 请求加载的内容。

我将如何做到这一点?

我尝试使用淡入淡出('in') 和淡入淡出('out') 方法,但没有奏效。我还尝试了另一个对 get() 方法的调用,并通过 start(1) 将不透明度设置为 1,但这也不起作用。

【问题讨论】:

    标签: javascript ajax html mootools fade


    【解决方案1】:

    您不需要获取 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);
    

    玩得开心

    【讨论】:

    • 只是几个问题:我是否理解正确——在请求的“onComplete”函数中设置的任何内容都将执行异步?所以本质上,我可以让 onComplete 指向一个匿名函数,例如,异步更新 5 个 div?
    • 是的,正确。这是一个带有 oncomplete 事件的分叉过程。您通常不能执行“element.fade(1).fade(0)”,因为它们会相互抵消,因此您需要等待 onComplete 链接任何内容。这就是链接:“链”的帮助,或者您可以从 onComplete 调用。顺便说一句,在任何 Fx 实例(变形、补间等)上都会触发一个“完成”事件。
    • 在后面我认为它是控制动画队列的 setTimeout/setInterval 的组合(因此有一个可以取消和恢复的计时器)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多