JQuery с помощью добавления с эффектами - PullRequest
134 голосов
/ 05 октября 2009

Как я могу использовать .append() с такими эффектами, как show('slow')

Влияние на append, похоже, не работает вообще, и дает тот же результат, что и обычный show(). Нет переходов, нет анимации.

Как я могу добавить один div к другому и иметь эффект slideDown или show('slow')?

Ответы [ 10 ]

179 голосов
/ 05 октября 2009

Влияние на добавление не будет работать, поскольку содержимое, отображаемое в браузере, обновляется сразу после добавления div. Итак, чтобы объединить ответы Марка Б и Стирпайка:

Стиль div, который вы добавляете как скрытый, прежде чем вы добавите его. Вы можете сделать это с помощью встроенного или внешнего скрипта CSS, или просто создать div как

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

Затем вы можете связать эффекты для своего приложения ( demo ):

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

Или ( демо ):

var $new = $('#new_div');
$('#original_div').append($new);
$new.show('slow');
119 голосов
/ 04 декабря 2009

Суть такова:

  1. Вы звоните «добавить» на родителя
  2. но вы хотите вызвать 'show' для нового ребенка

Это работает для меня:

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

или

$('<p>hello</p>').hide().appendTo(parent).show('normal');
20 голосов
/ 30 марта 2011

Другой способ при работе с входящими данными (например, при вызове ajax):

var new_div = $(data).hide();
$('#old_div').append(new_div);
new_div.slideDown();
13 голосов
/ 05 октября 2009

Что-то вроде:

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

должен это сделать?

Редактировать: извините, ошибка в коде и принял предложение Мэтта на борту тоже.

6 голосов
/ 28 января 2015

Когда вы добавляете в div, скрывает его и показывает его с аргументом "slow".

$("#img_container").append(first_div).hide().show('slow');
4 голосов
/ 05 октября 2009

Установить добавленный div, чтобы он изначально был скрыт через css visibility:hidden.

3 голосов
/ 26 июля 2012

Мне нужно было решение подобного рода, я хотел добавить данные на стене, например, в Facebook, когда они были опубликованы, используйте prepend(), чтобы добавить последнее сообщение сверху, думал, что это может быть полезно для других ..

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

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

код в ajax.php:

if (isset($_POST))
{

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


}
1 голос
/ 22 мая 2014

Почему бы вам просто не спрятаться, не добавить, не показать, как это:

<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 голосов
/ 19 августа 2015

В моем случае:

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

Вы можете настроить свой CSS с видимостью: скрытый -> видимость: видимый и настроить переходы и т.д.

0 голосов
/ 06 мая 2015

Можно показать сглаживание, если вы используете анимацию. В стиле просто добавьте «animation: show 1s», и весь внешний вид описывается в ключевых кадрах.

...