2009-07-17 40 views
1

我有例如項目的列表:爲什麼我的jQuery fadeOut/remove擺脫了父DOM元素?

<li class="ui-state-default" ><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>test <a href="#" title="Delete" class="itemDelete">x</a></li> 

$('.itemDelete').live("click", function() { 

       $(this).parent().remove(); 
      }); 

一切正常。如果我將其更改爲

$(this).parent().fadeOut("slow", function() { $(this).parent().remove(); }); 

看來,除去<li>確定,但也它上面的<li>。我試過運行淡入淡出,然後在單獨的行上刪除,但對用戶來說,就好像它剛剛完成刪除而不是淡入淡出。

任何想法?

回答

2

這是一個this在回調中指的是—的問題,this是您淡化的元素。您想要:

$(this).parent().fadeOut("slow", function() { $(this).remove(); }); 
+0

謝謝,我認爲這在回調中是已經褪色的對象? – Jon 2009-07-17 11:36:01

2

您正在移除父母的父母。更改爲:

$(this).parent().fadeOut("slow", function() { $(this).remove(); });