효과와 함께 추가를 사용하여 jQuery


144

다음 .append()과 같은 효과와 함께 사용하는 방법show('slow')

에 영향을 미치는 append것은 전혀 작동하지 않는 것 같으며 normal과 동일한 결과를 제공합니다 show(). 전환이나 애니메이션이 없습니다.

어떻게 다른 하나 개의 사업부를 추가하고, 할 수 있습니다 slideDown또는 show('slow')그것에 영향을?

답변:


195

div가 추가 되 자마자 브라우저에 표시되는 내용이 업데이트되므로 추가 효과가 작동하지 않습니다. 따라서 Mark B와 Steerpike의 답변을 결합하려면 다음을 수행하십시오.

실제로 추가하기 전에 추가하려는 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');

5
아마 "hidden"과 같은 CSS 클래스를 추가하는 인라인 스타일 일 것입니다 : none is .. "classier"(baddoom tsh);)
dmp

2
작동하지 않습니다. append를 사용하면 새로 추가 된 요소가 아닌 original_div가 반환됩니다. 실제로 컨테이너에서 show를 호출하고 있습니다.
Vic

1
@Vic .append()은 선택기 문자열조차 가져 가지 않습니다. 그래도 아이디어는 정확합니다. 감사합니다.
매트 볼

데모는 완벽하게 작동하지만 컨텐츠가 존재한다고 가정하므로 컨텐츠를 생성하는 경우에는 작동하지 않습니다. 제목 또는 div를 만들기 위해 이미지의 대체 콘텐츠를
가져 오는

124

본질은 이것입니다 :

  1. 부모님에게 '추가'를 부르고 있습니다.
  2. 하지만 당신은 새로운 아이에 '쇼'를 호출하고 싶어

이것은 나를 위해 작동합니다 :

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

또는:

$('<p>hello</p>').hide().appendTo(parent).show('normal');

2
이 두 가지 방법을 모두 시도했지만 작동하지 않습니다. 추가 된 컨텐츠에는 부드러운 슬라이딩 효과가 없습니다.
Chris22

'normal'속도에 적합한 문자열이 아닙니다. 전환하지 않으려면 비워 두십시오 (즉시 표시). 'fast'200ms 또는 'slow'600ms에 문자열 을 사용하십시오 . 또는 $("element").show(747)자체 속도를 정의하려면 (= 747ms) 와 같은 숫자를 입력하십시오 . 참조 문서를 애니메이션 / 기간을 찾습니다.
honk31

2
슬라이드 효과 포함 : element.slideUp("slow", function(){ element.appendTo(parent).hide(); element.slideDown(); });
Kevin Grabher

템플릿에서 숨기기 부분을 유지하는 것을 좋아합니다
lilalinux

23

들어오는 데이터로 작업 할 때의 다른 방법 (아약스 호출과 같은) :

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

15

다음과 같은 것 :

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

해야합니까?

편집 : 죄송합니다, 코드에 실수가 있으며 Matt의 제안도 기내에 올라갔습니다.


1
그것이 그가 원하는 것을 할 것인지 확실하지 않지만, 그렇다면, 함수를 연결하십시오 : $('#divid').append('#newdiv').hide().show('slow').
Matt Ball

작동합니다. #newdiv 비트가 잘못되었으므로 맞습니다. 체인을 연결할 수 있습니다. 지금 답변을 편집했습니다.
Mark Bell

8

당신이 사업부에 추가되면, 그것을 숨길 하고 보여 인수와 함께 "slow".

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

숨김 및 공연 이벤트가 first_div에 #img_container에 적용하지, 당신은 appendTo 사용해야합니다
JesuLopez

4

추가 된 div가 css를 통해 초기에 숨겨 지도록 설정하십시오 visibility:hidden.


3

비슷한 종류의 솔루션이 필요했고 페이스 북과 같은 벽에 데이터를 추가하고 싶을 때 게시 할 때 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

다음과 같이 간단히 숨기고, 추가하고, 보여주십시오.

<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

애니메이션을 사용하면 부드럽게 표시 할 수 있습니다. 스타일에 "애니메이션 : show 1s"를 추가하면 전체 모양이 키 프레임으로 구분됩니다.


0

나의 경우에는:

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

가시성 : 숨김-> 가시성 : 표시로 CSS를 조정할 수 있고 전환 등을 조정합니다. 전환 : 가시성 1.0s;

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.