jQuery追加fadeIn

mpe*_*pen 93 jquery

类似于:使用fadein并追加

但那里的解决方案对我不起作用.我尝试着:

 $('#thumbnails').append('<li><img src="/photos/t/'+data.filename+'"/></li>').hide().fadeIn(2000);
Run Code Online (Sandbox Code Playgroud)

但是,整个列表立即淡入,而不是每个项目都添加.看起来hide()并且fadeIn()正在应用于$('#thumbnails')不是<li>.我怎样才能让他们申请呢?这也不起作用:

$('#thumbnails').append('<li stle="display:none"><img src="/photos/t/'+data.filename+'"/></li>').filter(':last').fadeIn(2000);
Run Code Online (Sandbox Code Playgroud)

其他建议?

Ben*_*ank 192

你的第一次尝试非常接近,但要记住它append()正在返回#thumbnails,而不是你刚刚添加到它的项目.相反,首先构建您的项目并hide().fadeIn()在添加之前应用它:

$('#thumbnails')
    .append($('<li><img src="/photos/t/'+data.filename+'"/></li>')
        .hide()
        .fadeIn(2000)
    );
Run Code Online (Sandbox Code Playgroud)

这使用美元函数<li>提前构建.当然,你也可以把它写成两行,如果这样可以更清楚:

var item = $('<li><img src="/photos/t/'+data.filename+'"/></li>')
    .hide()
    .fadeIn(2000);
$('#thumbnails').append(item);
Run Code Online (Sandbox Code Playgroud)

编辑:您的第二次尝试也几乎在那里,但您需要使用children()而不是filter().后者只从当前查询中删除节点; 您新添加的项目不在该查询中,而是一个子节点.

$('#thumbnails')
    .append('<li stle="display:none"><img src="/photos/t/'+data.filename+'"/></li>')
    .children(':last')
    .hide()
    .fadeIn(2000);
Run Code Online (Sandbox Code Playgroud)


Rom*_*rov 43

$('<li><img src="/photos/t/'+data.filename+'"/></li>')
    .appendTo('#thumbnails')
    .hide().fadeIn(2000);
Run Code Online (Sandbox Code Playgroud)

  • 偷偷摸摸......扭转秩序.我喜欢. (4认同)

Der*_*huk 30

本·布兰克的答案很好,但对我而言,褪色是微不足道的.添加尝试淡入:

var item = $('<li><img src="/photos/t/'+data.filename+'"/></li>').hide();
$('#thumbnails').append(item);
item.fadeIn(2000);
Run Code Online (Sandbox Code Playgroud)