JQuery函数应用于所有类并删除父div

时间:2014-06-10 14:47:19

标签: javascript jquery html

在我的代码中,我有imgrembtn个元素。我希望每个图像都能在点击时销毁其父div(及其所有内部内容)。所以我有这个:

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

我的JavaScript控制台没有记录错误;但是,当我点击图像时没有任何反应。

复制步骤:打开http://jaminweb.com/YoutubePlaylist.html并单击红色X.这应该与左侧的文本框一起销毁。

关于什么是错的任何想法?

6 个答案:

答案 0 :(得分:2)

您需要将事件处理程序放在body上,因为您要动态添加元素,如下所示:

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

使用$(".rembtn")要求元素在加载时已经在页面上。在上面的代码示例中,事件处理程序实际上在body上,然后单击指定的元素将冒泡到触发该函数的该级别。

有关更多信息以及对事件委派的更详尽说明,请查看以下链接:http://learn.jquery.com/events/event-delegation/

答案 1 :(得分:1)

Laymanje的回答是正确的,但您可能需要考虑使用

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

使用"最近"而不是"父母"。这样,如果您需要编辑标记,则可以更改选择器,而不必计算父项。

编辑:详细说明,"父母"赢得工作是因为jQuery父函数只返回直接父级。它不会检查所有祖先。最近的将通过祖先层次结构,并删除第一个" Div"它找到了。您应该将其更改为ID选择器,以便更安全。

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

答案 2 :(得分:0)

尝试使用$(this).parent()。remove();没有'div'告诉jQuery你的意思是它是直接的父母。如果你需要提升多个级别,你可以再次链接.parent()。

实施例

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

或可能的

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

取决于您的HTML

答案 3 :(得分:0)

由于您正在动态创建元素,请尝试使用此代码:

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

答案 4 :(得分:0)

您正在jQuery的文档就绪侦听器之外绑定click事件。看看如果你改为

会发生什么
$(document).ready(function() { 
    $('.rembtn').on('click', function()  {
        jQuery(this).parent().remove();                   
    }); 
});

答案 5 :(得分:0)

如果你想让你的每个rembtn图像删除它们的div,你需要调用每个(),你必须把这个代码放在$(document).ready(function()

尝试这样的事情:

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

}

它应该有用。