JQuery с добавлением эффектов
Как я могу использовать .append()
с такими эффектами, как show('slow')
Эффект на append
не работает вообще, и он дает тот же результат, что и обычный show()
. Нет переходов, нет анимаций.
Как я могу добавить один div к другому и иметь эффект slideDown
или show('slow')
?
Ответы
Ответ 1
Эффект при добавлении не будет работать, потому что содержимое, отображаемое браузером, обновляется сразу же после добавления div. Итак, чтобы совместить ответы Марка Б и Стирпайка:
Настройте div, который вы добавляете, как скрытый, прежде чем вы его добавите. Вы можете сделать это с помощью встроенного или внешнего CSS script или просто создать 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');
Ответ 2
Суть в том, что:
- Вы вызываете 'append' в родительском
- но вы хотите вызвать 'show' для нового дочернего элемента
Это работает для меня:
var new_item = $('<p>hello</p>').hide();
parent.append(new_item);
new_item.show('normal');
или
$('<p>hello</p>').hide().appendTo(parent).show('normal');
Ответ 3
Другой способ работы с входящими данными (например, от вызова ajax):
var new_div = $(data).hide();
$('#old_div').append(new_div);
new_div.slideDown();
Ответ 4
Что-то вроде:
$('#test').append('<div id="newdiv">Hello</div>').hide().show('slow');
должен это сделать?
Редактировать: извините, ошибка в коде, и он также принял предложение Мэтта на борту.
Ответ 5
При добавлении к div, скрыть его и показать его с аргументом "slow"
.
$("#img_container").append(first_div).hide().show('slow');
Ответ 6
Установите добавленный div, который будет скрыт изначально через css visibility:hidden
.
Ответ 7
Мне понадобилось подобное решение, хотелось добавить данные на стене, например, в 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>";
}
Ответ 8
Почему бы вам просто не скрыть, добавить, а затем показать, например:
<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>
Ответ 9
Можно показать гладкое, если вы используете анимацию.
В стиле просто добавьте "animation: show 1s", и весь внешний вид опишите в ключевых кадрах.
Ответ 10
В моем случае:
$("div.which-stores-content").append("<div class="content">Content</div>);
$("div.content").hide().show("fast");
вы можете настроить свой CSS с видимостью: скрытый → видимость: видимый и настроить переход и т.д. переход: видимость 1.0s;