JQuery删除问题

时间:2010-11-27 15:14:30

标签: jquery

当我尝试使用$ element.remove()时,它不起作用,因为该元素还没有在dom中。我曾尝试使用$ element.html(""),但这只会删除内部html。我想清除整个对象。

修改

一个事件告诉我什么时候元素被添加到dom会有所帮助,因为那时我可以对它执行element.remove()。

编辑2

好的,有关此问题的更多信息。我有2个可排序的列表(由于多种原因没有连接),我添加了functionlity来在这两个可排序列表之间移动元素。但是在我将元素添加到另一个列表后,直接将IE移回原始列表。

所以我认为我将项目复制到另一个列表(而不是移动它)并删除旧项目。但由于元素在内存中,原始列表只是再次添加它。

这就是为什么我认为如果我清除元素(将其转换为""),那么如果它再次添加到原始列表中它就不会发生,因为它& #39; s只是一个空字符串。

也许这个问题有更好的解决方案?建议?

3 个答案:

答案 0 :(得分:1)

很难说出你需要什么,但是你在寻找the .not() method吗?这将过滤掉(在顶层)与您传递的选择器或元素匹配的任何元素。

var str = '<div>a div</div>\
        <span>a span</span>\
        <p>a paragraph</p>';

var $obj = $( str );

// remove the span before appending
$obj.not( 'span' ).appendTo( 'body' );

修改

从下面的评论中,您似乎希望阻止呈现来自服务器的元素。使用javascript无法实现这一点。 Javascript只能操作已经解析为DOM元素的元素。这意味着当你的javascript有机会操纵它时,它已经显示出来了。

根据您的情况,如果您无法在服务器端处理此问题,您可以尝试将元素的CSS设置为display:none。这不会阻止它被解析,但它会阻止它被绘制在页面上。

答案 1 :(得分:0)

也许您将.remove().empty()混淆了?

关于IE在向DOM添加内容时速度慢,是的,您正在使用的是通过一次添加所有内容来增加速度的有用技术。

$box = $('#thebox').remove().empty();
$box.append(...);
$box.append(...);
$box.append(...);
...
$box.append(...);
$('#theparentofthebox').append($box);

在这里,.remove()更像是分离来自DOM的元素。

答案 2 :(得分:0)

好的,我所做的就是用attr(“remove”,“true”)来标记项目,并在删除新项目时删除那些应删除的人员,然后让脚本通过我的元素。理想的解决方案,但它有效。