jQuery追加fadeIn

时间:2009-06-11 00:03:53

标签: jquery

类似于:Using fadein and append

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

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

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

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

其他建议?

6 个答案:

答案 0 :(得分:189)

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

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

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

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

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

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

答案 1 :(得分:41)

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

答案 2 :(得分:29)

Ben Blank's answer很好,但对我而言,褪色是微不足道的。在追加之后尝试淡入

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

答案 3 :(得分:3)

试试吧!

 $('#thumbnails').append(<li> your content </li>);
 $('#thumbnails li:last').hide().fadeIn(2000);

答案 4 :(得分:2)

Try this:

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

答案 5 :(得分:0)

以下是我采用的解决方案:

function onComplete(event, queueID, fileObj, response, info) {
    var data = eval('(' + response + ')');
    if (data.success) {
        $('#file-' + queueID).fadeOut(1000);
        var img = new Image();
        $(img).load(function () { // wait for thumbnail to finish loading before fading in
            var item = $('<li id="thumb-' + data.photo_id + '"><a href="#" onclick="deletePhoto(' + data.photo_id + ')" class="delete" alt="Delete"></a><a href="#" class="edit" alt="Edit"></a><div class="thumb-corners"></div><img class="thumbnail" src="/photos/t/' + data.filename + '" width=150 height=150/></li>');
            $('#thumbnails').append(item.hide().fadeIn(2000));).attr('src', '/photos/t/' + data.filename);
        } else {
            $('#file-' + queueID).addClass('error');
            //alert('error ' + data.errno); // TODO: delete me
            $('#file-' + queueID + ' .progress').html('error ' + data.errno);
        }
    }
}

这适用于uploadify。它使用jquery的load事件等待图像在出现之前完成加载。不确定这是否是最佳方法,但它对我有用。