2011-09-28 113 views
1

我有以下這應該刪除元素「.mycontainer」,當我點擊一個關閉按鈕。雖然它不會刪除元素。當我使用螢火蟲。我可以看到它只是在代碼的開始處將它移動到html標記之外。jquery .remove不按預期方式工作

$('.closeButton').click(function() { 
     $(".mycontainer").slideUp(function() { 
      $(".closeButton").parent().appendTo(".ContentsHolder");   
      $(this).remove(); 
     }); 
    }); 

它的工作原理,如果我註釋掉3號線//$(".closeButton").parent().appendTo(".ContentsHolder");

但這刪除的內容,所以我不能再訪問它。

編輯:

我的HTML看起來是這樣的,如果它有助於瞭解我在做什麼...

<div class='ContentsHolder'> 

</div> 
<div class='mycontainer'> 
    <div class='myContent'> 
     <a class='closebutton'>close</a> 
     ... other content ... 
    </div> 
</div> 

我也設法讓它通過把一個延遲的工作去除mycontainer $(this).delay(500).remove();

雖然我不認爲這是一個很好的解決方案。

+0

你能告訴我們一些HTML以及:)? – bang

回答

1

我以前解決同樣的問題是這樣的:

$(".mycontainer").slideUp(500, function() { 
    $(this).remove(); 
}); 
+0

這沒有工作......這是額外的線,我在我的例子中,導致它打破... – Tom

+0

可能相反,缺少延遲是造成這裏問題的原因。 –

2

你可以只鏈中的刪除功能的效果基本show像這樣經過:

$('.closeButton').click(function() { 
     $(".mycontainer").slideUp(function() { 
      $(".closeButton").parent().appendTo(".ContentsHolder");   
     }).remove(); 
    }); 
+0

不管...... –

+1

這會刪除父按鈕之前它已被追加到ContentsHolder – Tom

1

它看起來像$(this)是一個不同的上下文你的想法。

嘗試添加console.log($(this));以查看控制檯中的實際上下文。

$('.closeButton').click(function() { 
    $(".mycontainer").slideUp(function() { 
     $(".closeButton").parent().appendTo(".ContentsHolder"); 
     console.log($(this)); 
     $(this).remove(); 
    }); 
});