2012-10-29 54 views
0

我正在制作一个图像浏览器,在其中您通过单击图像本身来编辑图像的名称。然后一个tr会出现在它的底部,用一个表单来改变图像名称。除滑动动画之外,它一切正常。当滑动完成时滑动jquery

首先我检查是否有editRow已经显示。如果是这样,它将首先slideUp,然后从网站中删除。之后,我为点击的图像添加一个新的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你需要:

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

最后将其删除,否则$(this).parent()指的是什么,因为this已经从DOM中删除。

+0

不幸的是,它不工作。这样.editRow将在最后被删除。 – Tamara

+0

那有什么问题?只有当前的editRow将被删除。新的将停留。 –

+0

对不起。我认为我在顺序上做了错误的事情。它现在有效。谢谢! – Tamara