在JQuery上使用与其他几个类相同的类清空特定div

时间:2011-10-11 20:12:53

标签: jquery

我有这个问题,每次点击一个链接时我都会生成一个窗口(带有'window'类的div),这是代码:

$(".getWindow").live('click',function(){
    $('#desktop').append('<div class="window"><span class=\"close\">x</span>Well '+$(this).attr('well')+'<div id="screen"><img src="assembled_colors.jpeg" class="drag-image"  id="draggable"/></div></div>');
    $('.drag-image').draggable();
    $('.window').draggable();
});

然后,每次按下代码第二行的'x'时,我都会尝试关闭窗口:

$('.close').live('click', function(){
    $(this).parent().empty();
});

这只会关闭窗口内部,而不是窗口本身,我的下一个方法就是这样做:

$('.close').live('click', function(){
    $(this).parent().parent().empty();
});

关闭所有打开的窗口。你能帮我解决一下如何只关闭包含按下的x按钮的窗口吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

尝试:

$('.close').live('click', function(){
    $(this).parent().remove();
});

使用remove()而不是empty()的原因是empty()将影响父元素中包含的内容,而remove()将从DOM中删除父元素。这就是为什么你只删除窗口内的内容而不是实际的窗口本身。

答案 1 :(得分:1)

.empty()只是清除所选元素的内容 .remove()从DOM中删除元素。

我还建议使用closest,因此如果稍后引入一些其他元素来包装关闭按钮,它仍然可以使用

$('.close').live('click', function(){
    $(this).closest('.window').remove();
});

答案 2 :(得分:0)

您应该将 .empty() 更改为 .remove()

$('.close').live('click', function(){
    $(this).parent().remove();
});