【问题标题】:Load response data one after other?一个接一个地加载响应数据?
【发布时间】:2014-03-16 18:53:48
【问题描述】:

我的回复看起来像这样

<li class="dt">
<div>
<a><img src="imgpath1"><a>
</div>
</li>

<li class="dt">
<div>
<a><img src="imgpath2"><a>
</div>
</li>

<li class="dt">
<div>
<a><img src="imgpath3"><a>
</div>
</li>

我在做什么我的 ajax 成功

sucess:function(data){
$(#MAIN_UL).html(data)
}

我想要的是这个Fade in each element - one after another

我什至尝试先加载整个响应并给它一个显示 none 然后让它出现。但是 dint 工作。

如何使用此响应,如何使响应中的 li 在延迟后一一显示?当我必须对响应执行此操作时会出现问题..否则它适用于页面上的数据加载。

【问题讨论】:

  • 请使用“done”而不是“success”,因为它在 1.8 中已被弃用
  • @LShetty - 不推荐使用 jqXHR.success() 函数,而不是 $.ajax() 函数的 success 回调设置。
  • @John,jQuery.ajax() 函数基本上只是一个大的 jqXHR 对象。因此,我上面提到的是正确的。

标签: javascript jquery ajax


【解决方案1】:

试试:

success: function(html) {
    var $items = $(html).hide(); // First hide all the li elements
    $('#MAIN_UL').html($items); // Add the li elements to the page

    // Fade-in the li elements one at a time
    (function showItem(i) {
        $items.eq(i).fadeIn('slow', function() {
              showItem(i + 1);
        });
    })(0);
}

.fadeIn() 函数接受一个在动画完成时执行的回调。这可以用来使元素一个接一个地淡入。 .eq() 函数用于一次移动一个元素。

Demo on JSFiddle

【讨论】:

  • 为什么是 $items 和 $(html) ?我试过这个,但它给了我一个错误..无法识别的错误我现在正在做的是 $('#MAIN_UL').html(data);
  • @Digital_at_heart - 我将参数从 data 重命名为 html$(html) 创建元素而不将它们附加到 DOM,因此可以先隐藏它们。需要$items 才能将它们淡入。
  • @Digital_at_heart - 你的意思是你得到Syntax Error, unrecognized expression。如果是这样,您的 ajax 调用返回的 html 可能不太有效,因此对 $(html) 的调用失败,但 this does not。如果 html 无效,您应该修复它。
猜你喜欢
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
相关资源
最近更新 更多