2013-02-03 68 views
0

所以..這一個應該很簡單。我有一個錨元素。當它被點擊時,我想調用一個將刪除它的父元素的函數。從本質上講,它是一個刪除父母的鏈接。jQuery:傳遞錨點元素,當點擊時功能

我該如何做到這一點?我曾嘗試使用以下,這是行不通的:

<div> 
    <a href='javascript:removeParent()'>Remove</a> 
</div> 
<script> 
function removeParent() { 
    $(this).parent().remove() 
} 
</script> 

任何人都可以幫我嗎?

我試圖做到這一點,因爲它是一個可以具有多個屬性的窗體......所以你可以添加更多的屬性,因此需要一種方法來刪除它們。

乾杯!

回答

3

$(this)不是你做這件事的方式。

理想的情況下,這樣的:

<a href='#' class='remove'>Remove</a> 

$('.remove').on('click', function(e){ 
    e.preventDefault(); 
    $(this).parent().remove(); 
}); 

但是你的問題。「所以,你可以添加更多的屬性,因此需要一種方法來刪除它們」的這部分意味着你需要這個應用到未來的元素

$(document).on('click', '.remove', function(e){ 
    e.preventDefault(); 
    $(this).parent().remove(); 
}); 

雖然在理想的情況下,您會給jQuery更少的搜索空間,所以給列表包裝一個ID並使用它來標識可移動元素。

$('#attributelist').on('click', '.remove', function(e){ 
    e.preventDefault(); 
    $(this).parent().remove(); 
}); 
+1

@somekindarukus - 使用像這樣的基於類的事件處理程序比內聯JavaScript好得多。 – Nick

0

如果要創建的onload後動態的元素,你需要修改popnoodle的代碼使用的容器:

$('#container').on('click', '.remove', function(e) {... 

這是假設所有的類remove的元素在元素container。它創建一個container上的事件處理程序,它將應用於類remove的任何元素,即使它們是在處理程序附加後創建的。