Comment utiliser .append()
avec des effets tels que show('slow')
Avoir des effets sur append
ne semble pas fonctionner du tout, et donne le même résultat que show()
normal. Pas de transitions, pas d'animations.
Comment puis-je ajouter une div à une autre et avoir un effet slideDown
ou show('slow')
?
Avoir des effets sur append ne fonctionnera pas car le contenu affiché par le navigateur est mis à jour dès que la div est ajoutée. Donc, pour combiner les réponses de Mark B et Steerpike:
Style de la div que vous ajoutez en tant que masqué avant de l'ajouter réellement. Vous pouvez le faire avec un script CSS intégré ou externe, ou simplement créer le div en tant que
<div id="new_div" style="display: none;"> ... </div>
Ensuite, vous pouvez chaîner des 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');
L'essence est la suivante:
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');
Une autre façon de travailler avec des données entrantes (comme lors d’un appel ajax):
var new_div = $(data).hide();
$('#old_div').append(new_div);
new_div.slideDown();
Quelque chose comme:
$('#test').append('<div id="newdiv">Hello</div>').hide().show('slow');
devrait le faire?
Edit: désolé, erreur de code et prise en compte de la suggestion de Matt.
Lorsque vous ajoutez au div, masquez-le et affichez-le avec l'argument "slow"
.
$("#img_container").append(first_div).hide().show('slow');
Définissez le div ajouté pour être caché initialement via css visibility:hidden
.
J'avais besoin d'un type de solution similaire, je voulais ajouter des données sur un mur comme Facebook, lorsque posté, utilisez prepend()
pour ajouter le dernier message en haut, cette pensée pourrait être utile pour d'autres.
$("#statusupdate").submit( function () {
$.post(
'ajax.php',
$(this).serialize(),
function(data){
$("#box").prepend($(data).fadeIn('slow'));
$("#status").val('');
}
);
event.preventDefault();
});
le code dans 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>";
}
Pourquoi ne pas simplement cacher, ajouter, puis montrer, 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>
Dans mon cas:
$("div.which-stores-content").append("<div class="content">Content</div>);
$("div.content").hide().show("fast");
vous pouvez ajuster vos css avec visibilité: masqué -> visibilité: visible et ajuster les transitions, etc. transition: visibilité 1.0s;
Il est possible de montrer lisse si vous utilisez l'animation. Dans le style, ajoutez simplement "animation: show 1s" et l'apparence complète est décrite dans les images clés.