我如何在使用.append()
时添加像show('slow')
这样的效果?
在append
中使用效果似乎完全不起作用,结果与普通的show()
相同。没有转换效果,也没有动画。
我如何将一个
元素附加到另一个
元素,并对其进行
slideDown
或show('slow')
效果的处理?对于追加操作,对元素应用效果是无效的,因为浏览器显示的内容会在div被追加后立即更新。所以,结合Mark B和Steerpike的答案:
在实际追加之前将要追加的元素样式设为隐藏。可以使用内联或外部CSS脚本进行操作,或者只需创建一个具有“display:none”样式属性的div即可。
<div id="new_div" style="display: none;"> ... </div>
然后,您可以将效果链接到您的附加操作 (演示):
$('#new_div').appendTo('#original_div').show('slow');
或者 (演示):
var $new = $('#new_div');
$('#original_div').append($new);
$new.show('slow');
关键点是:
以下方法适用于我:
var new_item = $('<p>hello</p>').hide();
parent.append(new_item);
new_item.show('normal');
或:$('<p>hello</p>').hide().appendTo(parent).show('normal');
$("element").show(747)
这样输入任何数字(= 747ms)来定义自己的速度。请参阅文档并查找动画/持续时间。 - honk31element.slideUp("slow", function(){
element.appendTo(parent).hide();
element.slideDown();
});
- Kevin Grabher当使用传入数据(例如来自AJAX调用)时的另一种方法:
var new_div = $(data).hide();
$('#old_div').append(new_div);
new_div.slideDown();
类似这样:
$('#test').append('<div id="newdiv">Hello</div>').hide().show('slow');
应该这样做吗?
编辑:抱歉,代码有误,并采纳了Matt的建议。
$('#divid').append('#newdiv').hide().show('slow')
。 - Matt Ball"slow"
显示它。$("#img_container").append(first_div).hide().show('slow');
通过css将附加的div设置为初始隐藏状态,使用visibility:hidden
。
我需要一种类似的解决方案,想要在墙上添加数据,就像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>";
}
在我的最终项目中,我有这个确切的需求,在其中添加了一个带有样式display:none;
并为其添加了id的元素。在JQuery的第二行中,我添加了$('#myid').show('slow');
。
$(document).on('click','#trigger',function(){
$('#container').append("<label id='newLabel' style='display:none;' class='btn btn-light'>New Element</label>");
$('#newLabel').show('slow');
});
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<div id="container" class="btn-group">
<label class="btn btn-light">Old element</label>
</div>
<button id="trigger" class="btn btn-info">Click to see effect</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<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>
如果使用动画,可以实现平滑显示。只需在样式中添加“animation: show 1s”,并在关键帧中描述整个外观即可。
.append()
甚至不需要选择器字符串。不过这个想法仍然是正确的。谢谢,已更新。 - Matt Ball