jQuery efektleri ile ekleme kullanarak


144

.append()Gibi efektlerle nasıl kullanabilirimshow('slow')

Etkileri olması appendhiç işe yaramıyor ve normal ile aynı sonucu veriyor show(). Geçiş yok, animasyon yok.

Nasıl başka bir div eklemek ve bir olabilir slideDownveya show('slow')üzerinde etkisi?

Yanıtlar:


195

Bölme eklenir eklenmez, tarayıcının görüntülediği içerik güncellendiğinden, ekleme üzerinde efektler çalışmayacaktır. Mark B ve Steerpike'ın cevaplarını birleştirmek için:

Gerçekte eklemeden önce, eklediğiniz div öğesini gizli olarak biçimlendirin. Satır içi veya harici CSS komut dosyasıyla yapabilir veya yalnızca div'ı

<div id="new_div" style="display: none;"> ... </div>

Ardından , ekinize ( demo ) etkileri zincirleyebilirsiniz :

$('#new_div').appendTo('#original_div').show('slow');

Veya ( demo ):

var $new = $('#new_div');
$('#original_div').append($new);
$new.show('slow');

5
muhtemelen satır içi stil, "gizli" gibi bir css sınıfı ekleyerek görüntülemeye eşittir: none is .. "classier" (baddoom tsh);)
dmp

2
Bu işe yaramaz. Append komutunu kullandığınızda, original_div öğesini yeni eklenen öğeye döndürmez. Yani aslında konteyner üzerinde gösteri çağırıyorsunuz.
Vic

1
@Vic olduğu gibi .append()bir seçici dize bile almaz. Fikir yine de doğru. Teşekkürler, güncellendi.
Matt Ball

Demo mükemmel çalışır, ancak içeriğin var olduğunu varsayar; bu nedenle içeriği oluşturuyorsanız çalışmaz, örn. başlık veya
bölüm

124

Özü şudur:

  1. Ebeveyne 'ekle' diyorsunuz
  2. ama yeni çocuğa 'show' demek istersin

Bu benim için çalışıyor:

var new_item = $('<p>hello</p>').hide();
parent.append(new_item);
new_item.show('normal');

veya:

$('<p>hello</p>').hide().appendTo(parent).show('normal');

2
Bu iki yolu da denedim ve işe yaramıyor. Eklenen içerik üzerinde düzgün kayma etkisi yoktur.
Chris22

'normal'hız için uygun bir dize değil. geçiş yapmadan boş bırakın (hemen görünür). 'fast'200ms veya 'slow'600ms için dize kullanın . veya $("element").show(747)kendi hızınızı tanımlamak için (= 747ms) gibi bir sayı yazın . bkz docs ve animasyon / süresi arayın.
honk31

2
Slayt efektli: element.slideUp("slow", function(){ element.appendTo(parent).hide(); element.slideDown(); });
Kevin Grabher

Ben gizlemek kısmı şablonun dışında tutmak gibi
lilalinux

23

Gelen verilerle çalışırken (ajax çağrısında olduğu gibi) başka bir yol:

var new_div = $(data).hide();
$('#old_div').append(new_div);
new_div.slideDown();

15

Gibi bir şey:

$('#test').append('<div id="newdiv">Hello</div>').hide().show('slow');

yapmalı?

Düzenleme: üzgünüm, kodda hata ve Matt de gemide öneri aldı.


1
Değil emin ne istediğini yapacağını, ancak eğer öyleyse, sen zincirini işlevleri olur eğer: $('#divid').append('#newdiv').hide().show('slow').
Matt Ball

Çalışıyor; #newdiv biraz yanlış ve haklısın, onları zincirleyebilirsiniz. Cevabımı şimdi düzenledim.
Mark Bell

8

Div'e eklediğinizde, gizleyin ve argümanla gösterin"slow" .

$("#img_container").append(first_div).hide().show('slow');

Hide ve show olayı, first_div için değil, #img_container için geçerlidir, appendTo
JesuLopez

4

Eklenen div'i başlangıçta css ile gizlenecek şekilde ayarlayın visibility:hidden.


3

Benzer bir çözüme ihtiyacım vardı, facebook gibi bir duvara veri eklemek istedim, yayınlandığında, prepend()en son gönderiyi eklemek için kullanın , diğerleri için yararlı olabilir düşündüm.

$("#statusupdate").submit( function () {    
          $.post(
           'ajax.php',
            $(this).serialize(),
            function(data){

                $("#box").prepend($(data).fadeIn('slow'));                  
                $("#status").val('');
            }
          );
           event.preventDefault();   
        });   

ajax.php içindeki kod

if (isset($_POST))
{

    $feed = $_POST['feed'];
    echo "<p id=\"result\" style=\"width:200px;height:50px;background-color:lightgray;display:none;\">$feed</p>";


}

1

Neden böyle saklamıyorsun, eklemiyorsun, sonra göstermiyorsun:

<div id="parent1" style="  width: 300px; height: 300px; background-color: yellow;">
    <div id="child" style=" width: 100px; height: 100px; background-color: red;"></div>
</div>


<div id="parent2" style="  width: 300px; height: 300px; background-color: green;">
</div>

<input id="mybutton" type="button" value="move">

<script>
    $("#mybutton").click(function(){
        $('#child').hide(1000, function(){
            $('#parent2').append($('#child'));
            $('#child').show(1000);
        });

    });
</script>

0

Animasyon kullanıyorsanız pürüzsüz göstermek mümkündür. Stil olarak sadece "animasyon: show 1s" ekleyin ve tüm görünüm anahtar karelerde tanımlayın.


0

Benim durumumda:

$("div.which-stores-content").append("<div class="content">Content</div>);
$("div.content").hide().show("fast");

css'inizi görünürlükle ayarlayabilirsiniz: gizli -> görünürlük: görünür ve geçişleri ayarlayın vb geçiş: görünürlük 1.0s;

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.