jQuery fadeIn ekleme


97

Benzer: fadein ve append kullanma

Ancak oradaki çözümler benim için işe yaramıyor. Deniyorum:

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

Ancak daha sonra, her öğe eklendiğinde değil, tüm liste bir anda belirir. Gibi görünüyor hide()ve değil fadeIn()uygulanıyor . Bunun yerine onlara nasıl başvurabilirim? Bu da çalışmıyor:$('#thumbnails')<li>

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

Diğer öneriler?

Yanıtlar:


199

İlk denemeniz çok yakındır, ancak bunun append()geri döndüğünü unutmayın, #thumbnailsaz önce eklediğiniz öğe değil. Bunun yerine, hide().fadeIn()önce öğenizi oluşturun ve eklemeden önce uygulayın :

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

Bu, <li>vaktinden önce oluşturmak için dolar işlevini kullanır . Bunu daha açık hale getiriyorsa, elbette iki satıra da yazabilirsiniz:

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

Düzenleme: İkinci denemeniz de neredeyse orada, ancak children()bunun yerine kullanmanız gerekiyor filter(). İkincisi yalnızca düğümleri geçerli sorgudan kaldırır; yeni eklenen öğeniz bu sorguda değil, onun yerine bir alt düğümdür.

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

1
Güzel! Mükemmel çalışıyor. Küçük resmin yüklenmesi bitene kadar solmaya başlamayı nasıl erteleyeceğinizi bilemezsiniz, değil mi?
mpen

Aklımın ucunda değil, ancak "bir görüntünün yüklenmesi bittiğinde bir işlevi nasıl tetiklerim" ayrı bir soru için kötü bir fikir değildir. ;-)
Ben Blank

Biliyorum, senin çok akıllı olduğunu düşünmüştüm, bir taşla iki kuş öldürebiliriz: p Ah, Google bir çözüm sağladı. Tekrar teşekkürler :)
mpen

Bağlantı hala elinizde varsa, tekniği görmeyi çok isterim.
Ben Blank

1
örnek için teşekkürler! Öyle styledeğil stle :)
msroot

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

4
Sinsi ... emri tersine çeviriyor. Bunu sevdim.
mpen

30

Ben Blank'ın cevabı güzel, ama benim için solma, kusurlu. Ekledikten sonra solmayı deneyin :

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

1
Tamamen katılıyorum, bu yaklaşım titremeye neden olacak tek kare oluşturmadan kaçınacak ... sadece biraz daha incelik
Paul Carroll

Teşekkürler - bu, görünmek üzere olan öğenin düzeninin / konumlandırmasının her ikisini de aynı anda yaparken tutarsız olduğu bir sorunu çözdü.
frax

3

Dene!

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

2

Bunu dene:

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

0

İşte benim kullandığım çözüm:

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);
        }
    }
}

Bu uploadify ile çalışır . loadGörüntünün görünmeden önce yüklemeyi bitirmesini beklemek için jquery olayını kullanır . Bunun en iyi yaklaşım olduğundan emin değilim, ama benim için çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.