2012-10-29 3 views
0

나는 이미지 자체를 클릭하여 이미지의 이름을 편집 할 수있는 이미지 브라우저를 만들고 있습니다. 그러면 tr이 이미지 이름을 변경할 수있는 양식과 함께 하단에 나타납니다. 슬라이드 애니메이션을 제외하고는 모두 잘 동작합니다.Slideup이 완료되면 Slidedown jquery

먼저 editRow가 표시되는지 확인합니다. 그럴 경우 먼저 슬라이드를 밀어 올려 웹 사이트에서 제거하십시오. 그런 다음 클릭 한 이미지에 대해 새 editRow를 추가합니다. 나는 슬라이딩 애니메이션을 가져야했습니다. 어떻게하면 제대로 작동합니까? 이제는 슬라이드 업이 정상적으로 작동합니다. 그것은 위로 미끄러 져 editRow div를 제거합니다. 그 후에는 아무 일도 일어나지 않습니다.

또한 div는 처음에만 표시됩니다.

$('.imgItem').click(function() { 
     imgID = $(this).parent().find('div').attr('id').replace(/image/, '');; 
     if($('.editRow').length){ 
      $('.editRow').slideUp(300, function(){ 
       $('.editRow').remove(); 
       $(this).parent().parent().parent().after('<tr class="editRow"><td class="editItem" colspan="4"></td></tr>'); 
       $('.editRow').hide(); 
       $('.editItem').load("ajax.editImage.php",{imgID:imgID}); 
       $('.editRow').slideDown().show(); 
      });   
     }else{ 
      $(this).parent().parent().parent().after('<tr class="editRow"><td class="editItem" colspan="4"></td></tr>'); 
      $('.editRow').hide(); 
      $('.editItem').load("ajax.editImage.php",{imgID:imgID}); 
      $('.editRow').slideDown().show(); 
     } 
    }); 

답변

1

이는 editRow 클래스를 사용하여 모든 요소를 ​​제거하기 때문입니다. 나는 당신이 필요로 supect : 그렇지 $(this).parent() 아무것도 참조하기 때문에 this는 DOM에서 제거 된 이후

$('.editRow').slideUp(300, function(){ 
      ... 
      $(this).remove(); 

가, 마지막으로 제거합니다.

+0

불행히도 작동하지 않습니다. 이 방법으로 .editRow는 항상 끝에 삭제됩니다. – Tamara

+0

그게 뭐가 잘못 되었 니? 현재 editRow 만 삭제됩니다. 새로운 것이 유지됩니다. –

+0

죄송합니다. 나는 내가 그릇된 일을했다고 생각한다. 이제 작동합니다. 고맙습니다! – Tamara