2012-03-27 3 views
0

"추가"버튼을 클릭하여 사용자가 추가 할 수있는 항목 목록이 있습니다. 목록 위쪽에 새로운 div가 추가됩니다 (JQuery의 $(). slideDown();). 문제는 사용자가 추가 버튼을 너무 빨리 누르면 슬라이드가 멈추고 끝나지 않는다는 것입니다.onclick을 너무 빠르게 클릭하면 JQuery slideDowns가 중지됩니다.

다음은 내가하는 일에 대한 간단한 예입니다. http://jsfiddle.net/2RqmU/44/ "여기를 클릭하십시오."를 클릭하십시오.

애니메이션이 끝나지 않거나 적어도 애니메이션이 끝날 때까지 onclick을 사용 중지하지 않도록하려면 어떻게해야합니까?

+0

방금이 100ms로 slideDown 지연을 변경할 수 없습니다? 귀하의 JSFiddle 사용 : http://jsfiddle.net/2RqmU/46/ – mattytommo

답변

1

작동합니다. 대신 개별 요소를 추가/앞에 추가 할 수 있습니다.

var id = 0; 

//click 
$("#clickme").click(function() { 
    //Add a new div on top in content 
    var pre = "<div id='foo" + id + "' class='dynamicdiv'>hello " + id + "</div>"; 
    $("#content").prepend(pre); 

    //Slide it down and update ID 
    $("#foo" + id).slideDown(300); 
    id++; 
});​ 

업데이트 된 fiddle 참조 :이 애니메이션 문제를 정렬합니다.

+0

감사합니다. 내 영웅 - 나는 내가하고있는 일이 정말로 이상하다고 느꼈다. – Sebastian

+2

무엇이 잘못되었는지 설명합니다. 'var pre = $ ("# content"). html();' 정확한 반 애니메이션 순간에 콘텐츠의 스냅 샷을 잡아 내고있었습니다. 그런 다음 새로운 내용으로 다시 삽입하여 제자리에 고정시킵니다. – trapper

1

그냥 약간의 변화하지만 당신은 클릭 할 때마다의 대상 div의 전체 내용을 변경하고

var id = 0; 

$("#clickme").click(function() { 
    //Add a new div on top in content 
    $("#content").prepend("<div id='foo" + id + "' class='dynamicdiv'>hello " + id + "</div>"); 

    //Slide it down and update ID 
    $("#foo" + id).slideDown(300); 
    id++; 
});​ 
+1

만약 그들이 순서대로 들어가기를 원한다면 $ ("# content") 앞에 $ ("# content")를 붙이십시오 .. –

1

깔끔하고 깨끗합니다! http://jsfiddle.net/2RqmU/59/

최종 버전 :

HTML

<div id="clickme">CLICK HERE</div> 
<div id="content">    
</div> 

자바 스크립트

var id = 0; 

//click 
$("#clickme").click(function() { 
    //Add a new div on top in content 
    $('<div/>') 
     .attr({ 
      "id" : "foo" + id     
     }) 
     .addClass("dynamicdiv") 
     .html("Hello " + id) 
     .prependTo('#content') 
     .slideDown(300); 

    id++; 
}); 

CSS

div#clickme { 
    background-color: #5e1d1d; 
    color: #FFFFFF; 
    font-family: verdana; 
    font-size: 18px; 
} 

.dynamicdiv { 
    background-color: #5c8591; 
    border-bottom: 1px solid #FFFFFF; 
    display: none; 
    font-family: verdana; 
    font-size: 18px; 
} 
+1

수정 됨 - http://jsfiddle.net/2RqmU/60/ – PapaSmurf

+0

오, 멋지다! 어제 JQuery를 시작 했으므로 아직이 모든 것을 배우고 있습니다. 쉽게 포맷 할 수 있다는 것을 아는 것이 도움이됩니다. – Sebastian

+0

행복하게 도와 드리겠습니다! 최종 수정 - http://jsfiddle.net/2RqmU/61/ : P – PapaSmurf