2014-06-10 94 views
-2

在我的代碼中,我有imgrembtn的元素。我希望每個圖片都有其父div(及其所有內容)在點擊時被銷燬。所以我有這個:JQuery函數適用於所有類並刪除父div

$('.rembtn').on('click', function() { 
    $(this).parent('div').remove(); 
}); 

有沒有錯誤記錄到我的JavaScript控制檯;然而,當我點擊圖像時沒有任何反應。

複製步驟:打開http://jaminweb.com/YoutubePlaylist.html並單擊紅色的X.這應該會隨着文本框向左邊消失。

有什麼不對?

+0

嘗試'$(本).closest( 'DIV')刪除() ;'希望你至少可以刪除一些東西? – adeneo

+0

假設這些元素的父母不是div,請在這裏發佈一個HTML示例 –

+2

這又是其中一個問題沒有包含足夠的信息來解決這個問題。沒有去你的網站並且深入它,似乎不可能找到問題的根源。下一次,請在您的問題中包含所有信息。例如,您正在動態創建'.rembtn'元素,並且當您單擊這些元素時根本不調用事件處理程序。 –

回答

0

嘗試使用$(this).parent()。remove();沒有告訴jQuery的'div'你的意思是它是直接父母。如果您需要升級多個級別,則可以再次鏈接.parent()。

例子。

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

或可能

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

取決於你的HTML

1

Laymanje的答案是正確的,但你可能要考慮使用使用

$('.rembtn').on('click', function() 
{ 
    $(this).closest('div').remove(); 
}); 

「最近」,而不是「家長」。這樣,如果您需要編輯標記,則可以更改選擇器,而不必計算父母。

編輯:詳細說明,「Parent」不起作用的原因是因爲jQuery父功能只會返回直接父項。它不檢查所有的祖先。最接近的將通過祖先層次結構上升,並刪除它找到的第一個「Div」。您應該將其更改爲ID選擇器,以便更安全。

$('.rembtn').on('click', function() 
{ 
    $(this).closest('#vidplaydiv').remove(); 
}); 
0

既然你是動態創建的元素,嘗試用這個代替:

$(document).on('click', ".rembtn", function() { 
    $(this).parent('div').remove(); 
}); 
0

你是jQuery的文件準備好聽衆外結合的Click事件。看看你,而不是做

$(document).ready(function() { 
    $('.rembtn').on('click', function() { 
     jQuery(this).parent().remove();     
    }); 
}); 
2

你需要把事件處理程序的body因爲你是動態添加的元素,像這樣會發生什麼:

$("body").on("click", ".rembtn", function() { 
    $(this).closest("div").remove(); 
}); 

使用$(".rembtn")需要的元素已經在加載頁面。在上面的代碼示例中,事件處理程序實際上位於body上,然後單擊指定的元素將觸發該級別觸發該函數。

欲瞭解更多信息,與事件委派的更透徹的解釋,看看這個鏈接:http://learn.jquery.com/events/event-delegation/

0

如果您希望您的每一個rembtn圖像刪除其格,你需要調用每一個(),你必須把這個代碼放在$(document)裏面。準備(函數()

嘗試是這樣的:。

$(document).ready(function() { 
$(".rembtn").click(function(event) { 
$(".rembtn").each(function(element) { 
    $(this).parent('div').remove(); // or $(this).parent('div').html(); 
}); 
}); 

}

它應該工作