jQuery 使用附加效果

发布于 2024-08-06 11:35:56 字数 248 浏览 6 评论 0 原文

如何将 .append()show('slow') 等效果一起使用

append 施加效果似乎根本不起作用,并且它给出与正常 show() 相同的结果。没有过渡,没有动画。

如何将一个 div 附加到另一个 div,并对其产生 slideDownshow('slow') 效果?

How can I use .append() with effects like show('slow')

Having effects on append doesn't seem to work at all, and it give the same result as normal show(). No transitions, no animations.

How can I append one div to another, and have a slideDown or show('slow') effect on it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

与风相奔跑 2024-08-13 11:35:56

对附加效果不起作用,因为附加 div 后浏览器显示的内容就会更新。因此,结合 Mark B 和 Steerpike 的答案:

在实际附加之前,将要附加的 div 设置为隐藏。您可以使用内联或外部 CSS 脚本来完成此操作,或者只是将 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');

Having effects on append won't work because the content the browser displays is updated as soon as the div is appended. So, to combine Mark B's and Steerpike's answers:

Style the div you're appending as hidden before you actually append it. You can do it with inline or external CSS script, or just create the div as

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

Then you can chain effects to your append (demo):

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

Or (demo):

var $new = $('#new_div');
$('#original_div').append($new);
$new.show('slow');
我不咬妳我踢妳 2024-08-13 11:35:56

本质是这样的:

  1. 您在父级上调用“append”,
  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');

The essence is this:

  1. You're calling 'append' on the parent
  2. but you want to call 'show' on the new child

This works for me:

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

or:

$('<p>hello</p>').hide().appendTo(parent).show('normal');
絕版丫頭 2024-08-13 11:35:56

处理传入数据(例如来自 ajax 调用)的另一种方法:

var new_div = $(data).hide();
$('#old_div').append(new_div);
new_div.slideDown();

Another way when working with incoming data (like from an ajax call):

var new_div = $(data).hide();
$('#old_div').append(new_div);
new_div.slideDown();
我做我的改变 2024-08-13 11:35:56

比如:

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

应该这样做吗?

编辑:抱歉,代码错误,也采纳了马特的建议。

Something like:

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

should do it?

Edit: sorry, mistake in code and took Matt's suggestion on board too.

呆° 2024-08-13 11:35:56

当您附加到 div 时,使用参数“slow”隐藏它显示它

$("#img_container").append(first_div).hide().show('slow');

When you append to the div, hide it and show it with the argument "slow".

$("#img_container").append(first_div).hide().show('slow');
听风吹 2024-08-13 11:35:56

通过 css visibility:hidden 将附加的 div 设置为最初隐藏。

Set the appended div to be hidden initially through css visibility:hidden.

浅黛梨妆こ 2024-08-13 11:35:56

我需要一种类似的解决方案,想要像 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>";


}

I was in need of a similar kind of solution, wanted to add data on a wall like facebook, when posted,use prepend() to add the latest post on top, thought might be useful for others..

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

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

the code in ajax.php is

if (isset($_POST))
{

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


}
伤感在游骋 2024-08-13 11:35:56

我在我的最终项目中确实有这样的需求,我在其中附加了样式 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>

I had this exact need in my final project where I appended the element with style display: none; and added an id to it. In the second line of JQuery, I added $('#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>

似狗非友 2024-08-13 11:35:56

为什么不简单地隐藏、追加,然后显示,如下所示:

<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>

Why don't you simply hide, append, then show, like this:

<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>
月亮邮递员 2024-08-13 11:35:56

如果使用Animation的话,是可以显示流畅的。
在样式中只需添加“动画:显示 1s”,整个外观就会在关键帧中描述。

It is possible to show smooth if you use Animation.
In style just add "animation: show 1s" and the whole appearance discribe in keyframes.

终难遇 2024-08-13 11:35:56

就我而言:

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

您可以使用visibility:hidden -> 调整您的CSS可见性:可见并调整过渡等过渡:可见性1.0s;

In my case:

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

you can adjust your css with visibility:hidden -> visibility:visible and adjust the transitions etc transition: visibility 1.0s;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文