jQuery en utilisant append avec des effets

Comment puis-je utiliser .append() avec des effets comme show('slow')

Avoir des effets sur append ne semble pas fonctionner du tout, et ça donne le même résultat que la normale show(). Pas de transitions, pas d'animations.

Comment puis-je ajouter un div à un autre, et avoir un effet slideDown ou show('slow') sur celui-ci?

127
demandé sur Matt Ball 2009-10-05 17:47:27

10 réponses

Avoir des effets sur l'ajout ne fonctionnera pas car le contenu affiché par le navigateur est mis à jour dès que le div est ajouté. Donc, pour combiner les réponses de Mark B et Steerpike:

Stylez la div que vous ajoutez comme cachée avant de l'ajouter réellement. Vous pouvez le faire avec un script CSS en ligne ou externe, ou simplement créer le div comme

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

Ensuite, Vous pouvez enchaîner les effets à votre append (Démo):

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

Ou (démo):

var $new = $('#new_div');
$('#original_div').append($new);
$new.show('slow');
176
répondu Matt Ball 2013-01-08 00:43:35

L'essence est La suivante:

  1. Vous appelez 'append' sur le parent
  2. mais vous voulez appeler 'show' sur le nouvel enfant

Cela fonctionne pour moi:

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

Ou:

$('<p>hello</p>').hide().appendTo(parent).show('normal');
112
répondu Derek Illchuk 2009-12-04 18:38:14

Une Autre façon lorsque vous travaillez avec des données entrantes (comme à partir d'un appel ajax):

var new_div = $(data).hide();
$('#old_div').append(new_div);
new_div.slideDown();
19
répondu naspinski 2011-03-29 21:04:23

Quelque Chose comme:

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

Devrait le faire?

Edit: désolé, erreur dans le code et a pris la suggestion de Matt à bord aussi.

13
répondu Mark Bell 2009-10-05 14:14:40

Lorsque vous ajoutez à la div, cacher et montrer, avec l'argument "slow".

$("#img_container").append(first_div).hide().show('slow');
6
répondu Shubham Khatri 2016-07-04 09:06:50

Définissez le div ajouté à masquer initialement via css visibility:hidden.

4
répondu Steerpike 2012-07-18 18:46:52

J'avais besoin d'un type de solution similaire, je voulais ajouter des données sur un mur comme facebook, lorsqu'il est posté,utilisez prepend() pour ajouter le dernier message en haut, la pensée pourrait être utile pour les autres..

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

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

Le code en ajax.php est

if (isset($_POST))
{

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


}
3
répondu Karthik Sekar 2012-07-26 01:27:35

Pourquoi ne pas simplement cacher, Ajouter, puis afficher, comme ceci:

<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>
1
répondu Megamind Saiko 2014-05-21 23:17:05

Il est possible de montrer lisse si vous utilisez L'Animation. Dans le style, il suffit d'ajouter "animation: show 1s" et toute l'apparence discribe dans les images clés.

0
répondu NeedHate 2015-05-06 08:24:41

Dans mon cas:

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

Vous pouvez ajuster votre css avec visibility: hidden - > visibility: visible et ajuster les transitions etc transition: visibility 1.0 s;

0
répondu The Bumpaster 2015-08-19 11:03:16